Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jQuery调用带有JSON响应的ajax请求?_Jquery_Ajax_Json - Fatal编程技术网

如何使用jQuery调用带有JSON响应的ajax请求?

如何使用jQuery调用带有JSON响应的ajax请求?,jquery,ajax,json,Jquery,Ajax,Json,我无法从以下代码中打印行jQuery.support.cors=true的success。包括行jQuery.support.cors=true将发出警告消息。那么,如何在不丢失功能的情况下避免这种情况呢?我的主要目标是调用一个返回JSON数据的RESTWeb服务,我必须利用JSON数据。请帮助我如何做到这一点。请提供工作样品 <!doctype html> <html lang="en"> <head> <meta charse

我无法从以下代码中打印行jQuery.support.cors=true的success。包括行jQuery.support.cors=true将发出警告消息。那么,如何在不丢失功能的情况下避免这种情况呢?我的主要目标是调用一个返回JSON数据的RESTWeb服务,我必须利用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>

jQuery.getJSON演示
jQuery.support.cors=true;
$.ajax({
网址:'http://json-cricket.appspot.com/score.json',
数据类型:“json”,
成功:职能(e){
//成功回调
警惕(“成功”);
}})
  • 您可能没有添加
    类型
    //GET或POST,这是哪种类型的REST操作
  • 数据类型
    错误出售
  • 未能添加内容类型
    contentType

  • 更新: 在试图找出原因的同时,我认为这是理解问题的关键

    假设您在域abc.com上,并且希望向域提出请求 xyz.com。要做到这一点,您需要跨越域边界,这是一个禁忌 布劳瑟兰的大部分地区

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

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

    如果您正在请求跨域服务,则需要包括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
        }
     });
    
    CORS(跨源资源共享)与XSS不同

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


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

    最好使用jsonp请求。为此,只需将
    dataType
    指定为
    jsonp

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

    参见

    上的示例尝试一下,它会给出最好的结果。这是在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);
            }
        });
    }
    

    我认为这个选项是
    dataType
    ,不是全部小写,但不确定如果jquery能够处理它,会有多大的不同,我记不起来了。“将发出警告消息”哪条消息?跨域问题?我想这是一个跨域ajax请求?请尝试使用jsonpVoted进行小提琴演奏:)
    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);
            }
        });
    }