需要编写基于Javascript/Jquery的跨域请求
嗨,我必须编写RESTAPI调用,它将服务于跨域请求 我已经通过请求与Mozilla(rest客户端)进行了检查,它现在为我提供了如何通过html中的jquery/javascript编写的数据需要编写基于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
{"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时使用脚本)?你有两种方法:
XMLHttpRequest
对象的实例完成,并且仅限于发送到同一域
标记来完成,主要是在head部分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插件)进行了检查。您可以在此处检查代码,似乎有一些语法错误