很抱歉,如果我复制了Qn。但是没有一个答案能够解决我的跨浏览器请求问题。
我需要使用json和必需的标头向不同的URL发送GET请求。我尝试了以下代码,但似乎没有工作。
需要3个参数..
var URL = 'url?firstName=myname&lastName=mylastname&email=myemail';
$.ajax({
type: 'GET',
url: URL,
dataType: 'jsonp',
success: function(){
alert("hi");
},
error: function() {
alert( 'Something goes wrong!' );
}
});
输出是'出错了!'。 当我在浏览器区域中复制URL时,这是有效的。但我希望通过jquery和json格式化输入来完成相同的工作。 我需要传递所需的标题。
非常感谢,如果有人能告诉我上述代码中缺少的内容吗?
答案 0 :(得分:0)
设置json
标头作为响应,如下所示,
对于JSON:
header('Content-Type: application/json');
对于JSON-P:
header('Content-Type: application/javascript');
JSONP是JSON,附带了一个包含JSON内容的JavaScript回调函数。
答案 1 :(得分:0)
使用jsonp作为dataType时,需要绑定服务器端的回调函数。 例如,如果您需要像{“id”:“myId”}这样的json响应,则在服务器端应该返回“mycallback({”id“:”myId“})”;
此外,您还需要在客户端编写该功能。
function mycallback(json)
{alert(json);}
答案 2 :(得分:0)
您无法执行跨域请求,直到服务器为CORS设置了标头。 CORS
Access-Control-Allow-Origin =*
如果您已经拥有在其他URL上执行CORS请求的权限 那么你需要告诉contentType。
并向您的网址添加回调函数
var URL = 'url?firstName=myname&lastName=mylastname&email=myemail&callback=someotherFunction';
然后调用ajax。
$.ajax({
type: 'GET',
url: URL,
Content-Type: 'application/javascript'
dataType: 'jsonp',
success: function(){
alert("hi");
},
error: function() {
alert( 'Something goes wrong!' );
}
});
function someotherFunction(response)
{
alert(respone.yourData); //do something with response.
}