4

Syntax error: invalid label当我在跨域中通过 AJAX 调用 REST 服务时遇到问题。我的回答是{ "d": 12000 }它在“d”的双引号处显示错误。

我的代码是这样的:

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

我该如何解决这个问题?

4

3 回答 3

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'; 它将被发送到服务器,但您正在发布任何数据,所以它是无用的。

于 2013-01-22T13:31:46.203 回答
0

使用这个,你有一个格式错误的 URL (double //),你的 也有问题contentType,它需要application/json

$.ajax({
    type: 'post',
    url: 'http://localhost/test.svc/getnumber',
    datatype: "jsonp",
    contentType: 'application/json',
});
于 2013-01-22T13:25:06.903 回答
0

将您的代码编辑为:

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

您的内容类型应该是url和按规范存在错误application/json

于 2013-01-22T13:23:50.913 回答