如何使用jquery使用json响应调用ajax请求?

时间:2013-09-24 11:50:22

标签: jquery ajax json

我无法使用 jQuery.support.cors = true; 行从下面的代码中打印成功。包括 jQuery.support.cors = true; 行将发出警告消息。那么如何在不失去功能的情况下避免这种情况呢?我的主要目标是调用一个返回JSON数据的rest webservice,我必须使用JSON数据。请帮助我如何实现这一目标?请提供工作样本

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery.getJSON demo</title>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<script>
    jQuery.support.cors = true;
    $.ajax ({
        url: 'http://json-cricket.appspot.com/score.json',
        datatype: "json",
        success: function (e) {
            // Success callback
            alert("sucess");
        }})
</script>

</body>
</html>

5 个答案:

答案 0 :(得分:5)

  1. 您可能错过了添加 type // GET或POST,哪种类型的REST OPEATION
  2. dataType 错误
  3. 错过了添加 contentType

  4.  $.ajax({
                type: "POST", //rest Type
                dataType: 'jsonp', //mispelled
                url: "http://json-cricket.appspot.com/score.json",
                async: false,
                contentType: "application/json; charset=utf-8",
                success: function (msg) {
                    console.log(msg);                
                }
     });
    

    <强>更新 在试图找出原因的同时,我认为这是理解问题的best answer

      

    假设您在域abc.com上,并且您想要向域发出请求   xyz.com。为此,您需要跨越域边界,禁止进入   大多数浏览器。

         

    绕过此限制的一项是标签。当你   使用脚本标记,域限制被忽略,但正常情况下   情况下,你不能真的对结果做任何事情了   脚本只是得到评估。

         

    输入JSONP当您向JSONP服务器发出请求时   启用后,您将传递一个特殊参数,告诉服务器一点   关于你的页面。 这样,服务器能够很好地结束   它以您的页面可以处理的方式响应。

答案 1 :(得分:2)

最佳镜头将使用jsonp请求。为此,请将dataType指定为jsonp

$.ajax({
    url: 'http://json-cricket.appspot.com/score.json',
    dataType: 'jsonp',
    success: function (data) {
        console.log(data);        
    }
});

请参阅jsFidle

上的示例

答案 2 :(得分:0)

如果您要请求跨域服务,则需要包含 jQuery.support.cors = true; 。正确的AJAX代码将是:

 $.ajax ({
    url: 'http://json-cricket.appspot.com/score.json',
    dataType: "json",
    contentType: "application/json",
    success: function (jsonData) {
        // Success callback
        alert("sucess");
    },
    error: function() {
        //any error to be handled
    }
 });

答案 3 :(得分:0)

CORS(跨源资源共享)与XSS不同。

$.support.cors包含测试结果,该测试用于测试当前浏览器是否支持cors。更改它不会使浏览器支持cors。

此外,您的服务器必须通过返回正确的标头来支持CORS

答案 4 :(得分:0)

试试这个,它会给出最好的结果。这在REST架构中使用,响应速度非常快

function CallService(sucessData) {
    $.ajax({
        // Add code for Cross Domain
        headers: getHeaders(),
        type: varType, //GET or POST or PUT or DELETE verb
        url: varUrl, // Location of the service
        data: varData, //Data sent to server
        contentType: varContentType, // content type sent to server
        dataType: varDataType, //Expected data format from server
        processdata: varProcessData, //True or False
        crossDomain: true,
        timeout: 200000,
        success: sucessData,
        error: function (xhr) {// When Service call fails
            alert("Error: " + xhr.responseText);
        }
    });
}