Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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
需要编写基于Javascript/Jquery的跨域请求_Javascript_Jquery_Cross Domain - Fatal编程技术网

需要编写基于Javascript/Jquery的跨域请求

需要编写基于Javascript/Jquery的跨域请求,javascript,jquery,cross-domain,Javascript,Jquery,Cross Domain,嗨,我必须编写RESTAPI调用,它将服务于跨域请求 我已经通过请求与Mozilla(rest客户端)进行了检查,它现在为我提供了如何通过html中的jquery/javascript编写的数据 {"POST to adengine":{"method":"POST","url":"http://xxx.com/Advertisement/1.0/GetAds","body":"aid=Apposaurus_xxx","overrideMimeType":false,"headers":[["C

嗨,我必须编写RESTAPI调用,它将服务于跨域请求

我已经通过请求与Mozilla(rest客户端)进行了检查,它现在为我提供了如何通过html中的jquery/javascript编写的数据

{"POST to adengine":{"method":"POST","url":"http://xxx.com/Advertisement/1.0/GetAds","body":"aid=Apposaurus_xxx","overrideMimeType":false,"headers":[["Content-Type","application/x-www-form-urlencoded"]]}}
这是我的html示例代码

<html>
<title></title>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">

JSONTest = function() {
    var resultDiv = $("#resultDivContainer");
    $.ajax({
        url: "http://xxx.com/Advertisement/1.0/GetAds",
        type: "POST",
        data:  "aid=Apposaurus_xxx",        
        overrideMimeType:'false',
        crossDomain: 'true',
        dataType: 'jsonp',
        headers:{"Content-Type":'application/x-www-form-urlencoded'},

        success: function (result) {
            switch (result) {
                case true:
                     processResponse(result);
                    break;
                default:
                    resultDiv.html(result);
            }
        },
        error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        }    
});
};
</script>
</head>
<body>


<div id="resultDivContainer"></div>

<button type="button" onclick="JSONTest();">JSON</button>

</body>
</html> 

JSONTest=函数(){
var resultDiv=$(“#resultDivContainer”);
$.ajax({
url:“http://xxx.com/Advertisement/1.0/GetAds",
类型:“POST”,
数据:“aid=Apposaurus_xxx”,
overrideMimeType:“false”,
跨域:“true”,
数据类型:“jsonp”,
标题:{“内容类型”:“application/x-www-form-urlencoded”},
成功:功能(结果){
开关(结果){
大小写正确:
过程响应(结果);
打破
违约:
html(result);
}
},
错误:函数(xhr、ajaxOptions、thrownError){
警报(xhr.状态);
}    
});
};
JSON

我错在哪里?

跨域请求应该使用JSONP完成。JSONP代表带填充的JSON。我试着在这里解释一下

您希望如何从服务器获取数据(当我们谈论JSON时使用脚本)?你有两种方法:

  • ajax请求,在后台使用
    XMLHttpRequest
    对象的实例完成,并且仅限于发送到同一域
  • 一个简单的HTTPGET请求,通过在HTML文档的某个地方插入
    标记来完成,主要是在head部分
  • 第二种技术不限于跨域策略。但是,让我们来看看浏览器在这两种情况下如何作为代理工作:

    ajax场景:开发人员代码=>browser=>request=>server=>response=>browser=>developer代码。这意味着,当您使用ajax时,浏览器代表您创建一个HTTP请求(带有
    X-Request-with:XMLHttpRequest
    头字段)并将其发送到服务器,然后它获得响应库,*但它会返回响应,因此作为开发人员,你有机会分析反应,做你想做的事情

    HTTP获取场景:开发人员代码=>head中的脚本标记=>browser=>request=>server=>response=>browser=>response执行


    看到了吗?当您使用JSONP,或者在head中插入simple
    标记时,浏览器从服务器获取脚本,但它运行脚本,这就是结束。你没有被吸引到回应中,你也无法控制它。因此,您需要为它提供一个
    回调
    函数
    callback({})
    {}
    的不同之处在于,当它被执行时,您有机会获得结果并对其进行处理。

    您能稍微更改一下代码并告诉我们控制台上记录了什么吗?请不要使用IE,因为它有一个可怕的console.log实现(显示Object.Object)。带有Firebug的Chrome或Firefox会做得更好

    建议的修改:

            success: function (result) {
    console.log("here is the result:",result);
    //            switch (result) {
    //                case true:
    //                     processResponse(result);
    //                    break;
    //                default:
    //                    resultDiv.html(result);
    //            }
            },
            error: function (xhr, ajaxOptions, thrownError) {
    console.log("this is the error",arguments);
    //        alert(xhr.status);
            } 
    

    你是对的!我需要为此做些什么。这是否意味着来自服务器的数据应该使用JSONP格式?还有别的。谢谢数据类型已设置为jsonp,因此这可能不是问题所在[可以参考此问题而不是此处的问题,请阅读op发布的代码中的数据类型为jsonp的位置。问题可能是缺少请求头、缺少post值或成功的代码块:Function找不到此服务的api文档,但通过表单发布值只会得到html响应而不是jsonp,也许它可以返回jsonp但我找不到如何操作。
    基本变量appid和useragent丢失了
    你读过api吗?当我用发布的值创建一个表单并提交它时,我没有得到有效的JSONP,所以你一定缺少一个参数。我用js代码返回html。在iframe或设置脚本标记的src中效果很好,但对x没有太大作用mlhttprequest请求jsonpWith headers:“[[“内容类型”,“应用程序/x-www-form-urlencoded”]]它将为您提供数据。我使用Mozilla firefox(Rest插件)进行了检查。您可以在此处检查代码,似乎有一些语法错误