4

json 応答は次のとおりです。{"userName":"clevermeal835","userRole":"Participant"}

成功として警告メッセージが表示されますが、応答を読んでいるときに次のエラーが表示されます。

XMLHttpRequest は URL Origin を読み込めません null は Access-Control-Allow-Origin で許可されていません。

コマンドプロンプトからコードを実行すると

--disable-web-security

返事をもらっています。コマンドプロンプトを使用せずにこの問題を解決するのに役立つ人はいますか? 以下のコード。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="Scripts/jquery-1.4.2.min.js"></script>

<script>
$(document).ready(
    function() {
        $("#jsonpbtn2").click(function() {
            var uid = "clevermeal835";
            var pwd = "Welcome_1";
            var userType = "participant";
            var surl="http://localhost:8080/RESTlet_WS/MobiSignIn/{\"userName\":\""+uid+"\",\"password\":\""+pwd+"\",\"userType\":\""+userType+"\"}/";

$.ajax({
    type : 'GET',
    contentType: "application/json; charset=utf-8",
    url : surl,
    dataType : 'json',
    headers : {Accept : "application/json","Access-Control-Allow-Origin" : "*"},
    crossDomain : true,
    success :SucceedFunc ,
    error : function(data, textStatus, errorThrown) {
        console.log("error"+' '+JSON.stringify(data) + textStatus  + errorThrown);}
    });

function SucceedFunc(data) {
    alert("success");
    var userName = data.userName;
    alert(userName);
    }
});
});
</script> 
</head>
<body>
<input id="jsonpbtn2" type="submit" value="button" />
</body>
</body>
</html>
4

2 に答える 2

4

It looks like you're testing your site by serving your web page over file:// in Chrome. For security reasons, Chrome does not allow you to perform Ajax calls from file:// resources.

The security threat here is that someone could email you a .html file that, when opened with file://, sent out Ajax requests to fetch the contents of your email inbox (if allowed to query web pages) or other files on your computer (if allowed to query other file resources).

You should instead test your pages by serving them from the same localhost:8080 server that is serving your API pages.

于 2012-08-21T14:21:35.683 に答える
-1

追加してみてください:

beforeSend: function( xhr ) {
     xhr.overrideMimeType( 'text/plain; charset=UTF-8' );
}

あなたのAjax呼び出しに。

于 2012-08-21T14:10:07.197 に答える