json用于发出跨浏览器请求

时间:2013-03-04 09:02:04

标签: jquery ajax json http-post

很抱歉,如果我复制了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格式化输入来完成相同的工作。 我需要传递所需的标题。

非常感谢,如果有人能告诉我上述代码中缺少的内容吗?

3 个答案:

答案 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.
}