【问题标题】:How to resolve uncaught syntax error in jsonp如何解决 jsonp 中未捕获的语法错误
【发布时间】:2013-10-25 13:58:03
【问题描述】:

我正在使用 jquery ajax 访问跨域 api,但我无法实现。我在控制台中收到错误为“未捕获的语法错误:意外令牌

代码:

$.ajax({ 
url: "http://..............", 
type:"GET", 
dataType: 'jsonp', 
crossDomain: true, 
contentType:"application/javascript", 
success: function (data) { 
    alert(data);
}, 
error: function (errorMEssage, Errtext) { 
    alert(Errtext);
} 
});

错误:

uncaught syntaxerror : unexpected token <

【问题讨论】:

  • 服务器返回什么?支持 JSONP 吗?
  • 然后将 dataType 更改为 xml
  • @user1671639 iam 没有传递任何数据 iam 只是检索 api 中的所有内容
  • 但这行不通。您不能将 XML 用于跨域 AJAX 调用。

标签: c# javascript ajax jquery


【解决方案1】:

您不能使用 JSONP 对返回 XML 的服务器进行跨域 AJAX 调用。如果您希望能够进行跨域 AJAX 调用,您有两种可能性:

  • 使用JSONP -> 你的服务器需要支持它。
  • 使用CORS -> 你的服务器AND 客户端浏览器不需要支持它。

如果您的服务器支持 CORS,您的请求可能如下所示:

$.ajax({ 
    url: "http://..............", 
    type:"GET", 
    crossDomain: true, 
    success: function (data) { 
        alert(data);
    }, 
    error: function (errorMEssage, Errtext) { 
        alert(Errtext);
    } 
});

【讨论】:

  • 使用 JSONP 或 CORS。您将需要修改远程端点以支持 2 之一。只有这样您才能进行跨域 AJAX 调用。
  • 没有。 CORS 表示跨域资源共享。请阅读我在回答中链接到的文章。您的服务器端脚本需要将 Access-Control-Allow-Origin 响应标头发送到 OPTIONS 动词请求。确保远程服务器发送此标头后,您可以从 AJAX 调用中删除 dataType: 'jsonp' 参数。
  • 但事情是我获得了 200 次成功,如果我点击该错误,我可以在控制台中查看 xml 响应
  • 那么可能服务器已经支持CORS了。尝试删除 dataType: 'jsonp' 参数。同时更改contentType 参数。
  • 不指定dataType参数,去掉就是你说的
【解决方案2】:

将数据类型更改为 xml

dataType: 'xml', 

【讨论】:

  • @DarinDimitrov +1 谢谢,我正在查看您提到的 CORS。
  • @Praveen 你能在这里分享那个链接吗
猜你喜欢
  • 1970-01-01
  • 2014-11-24
  • 2020-03-09
  • 2023-02-03
  • 2011-11-09
  • 2016-10-09
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
相关资源
最近更新 更多