当我在跨域调用AJAX的REST服务时,我遇到了Syntax error: invalid label
的问题。我的回答是{ "d": 12000 }
它在“d”的双引号上显示错误。
我的代码是这样的:
$.ajax({
type: 'post',
url: 'http://localhost/test.svc/getnumber',
dataType: "jsonp",
crossDomain: true,
contentType: "application/jsonp",
});
如何解决问题?
答案 0 :(得分:3)
它不起作用,因为您的服务器没有返回JSONP值;它应该使用请求查询字符串中的callback
值,并返回一段包含函数调用的JavaScript代码。
例如,$.ajax()
会向/path/to/script?callback=jsonp_12123123
发送请求,因此您的服务器应该返回:
jsonp_12123123({"d": 12000})
使用PHP,您可以使用以下方法完成此任务:
<?php
// DO NOT USE AS IS, SANITIZE $_GET!!!
echo $_GET['callback'], '(', json_encode(array(
'd' => 12000,
)), ')';
此外,您不需要contentType: 'application/jsonp'
;它会被发送到服务器,但是你发布了任何数据,所以它没用。
答案 1 :(得分:0)
将您的代码编辑为:
$.ajax({
type: 'post',
url: 'http://localhost/test.svc/getnumber',
dataType: "jsonp",
contentType: 'application/json'
});
url
和specification的内容类型应该是application/json
。
答案 2 :(得分:0)
使用此功能,您的网址格式错误(加倍//
),您的contentType
也存在问题,需要application/json
:
$.ajax({
type: 'post',
url: 'http://localhost/test.svc/getnumber',
datatype: "jsonp",
contentType: 'application/json',
});