语法错误:无效标签

时间:2013-01-22 13:20:57

标签: jquery

当我在跨域调用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",
});

如何解决问题?

3 个答案:

答案 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'
});

urlspecification的内容类型应该是application/json

答案 2 :(得分:0)

使用此功能,您的网址格式错误(加倍//),您的contentType也存在问题,需要application/json

$.ajax({
    type: 'post',
    url: 'http://localhost/test.svc/getnumber',
    datatype: "jsonp",
    contentType: 'application/json',
});