0

对不起,如果我复制 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 格式的输入来完成同样的工作。我需要传递所需的标题。

如果有人可以让我知道上述代码中缺少什么,我们将不胜感激?

4

3 回答 3

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.
}
于 2013-03-04T09:08:49.290 回答
0

在响应中设置json标题如下,

对于 JSON:

header('Content-Type: application/json');

对于 JSON-P:

header('Content-Type: application/javascript');

JSONP 是 JSON,带有一个包装 JSON 内容的附加 JavaScript 回调函数。

于 2013-03-04T09:04:45.297 回答
0

使用 jsonp 作为 dataType 时,需要在服务器端绑定一个回调函数。例如,如果您需要像 {"id":"myId"} 这样的 json 响应,则在服务器端它应该像 " mycallback({"id":"myId"})";

此外,您还需要在客户端编写该函数。

function mycallback(json)
{alert(json);}
于 2013-03-04T09:08:41.467 回答