2012-08-15 58 views
1

我是新来的AJAX,并试图找出如何做一个JSONP跨域调用。我不完全确定下面的代码有什么问题。在Firebug NET控制台中,我可以看到响应正常(完整的HTML页面),并且HTML选项卡也显示正常。我收到一个“语法错误”,指向URL /?jsonp = jQuery17109722891130251606_1345069208686 & _ = 1345069209298。简单的Ajax错误?

我在那里有一个错误部分,但只是阅读.ajax里面的错误函数在使用JSONP时无法正常工作?

下面的代码:

$.ajax({ 
    url: 'http://www.google.com', 
    type: 'GET', 
    dataType: 'jsonp', 
    jsonp: 'jsonp', 
    crossDomain: true, 
    complete:function(jsonp){ 
    $('#test').append(jsonp); 
} 
}); 

我在本地运行此,尝试了多种不同的URL ....任何意见或解释?谢谢! 忘了提及textStatus也抛出parsererror?

+0

你确定你打电话的服务器实际上支持JSONP吗? – 2012-08-15 22:33:12

+0

取代充满:使用成功: – Shenaniganz 2012-08-15 22:33:18

+0

[什么是JSONP?](http://remysharp.com/2007/10/08/what-is-jsonp/) – kapa 2012-08-15 22:33:36

回答

2

在这里

complete:function(jsonp){ 
    $('#test').append(jsonp); 
} 

你想一个jqXHR对象追加到DOM元素。看看这个:http://jsfiddle.net/TkUBz/

你需要做的是使用success属性,如:

/*complete*/ 
    success:function(data){ 
     $('#test').append(data); 
    } 

现在,您看到的语法错误是因为你加载google's头版,这包含一个JavaScript代码,浏览器在将HTML数据附加到#test元素时尝试执行,并且由于不同的原因JavaScript代码无法在您的页面上工作,因此代码失败并且您看到语法错误。

+0

我不知道我应该如何使用它?我正在尝试将信息附加到页面上? – Aaron 2012-08-15 22:37:13

+0

@Aaron,我刚刚举了一个'成功'属性的例子。在你的情况下,你应该在代码中用'success'替换'complete'。 – Vlad 2012-08-15 22:39:01

+0

嘿弗拉德,这不会允许跨域。我已经尝试了使用和不使用JSONP信息的确切代码,并且仍然可以在.NET面板内正确接收所有内容,但是会出现语法错误。尽快删除AJAX块没有错误。奇怪的 – Aaron 2012-08-15 22:42:21