使用数据类型脚本的Python jQuery api GET请求返回未定义的响应

时间:2013-12-06 11:39:38

标签: jquery python-3.x

下午好,

我正在尝试使用jQuery访问python网络服务,并在成功事件函数中获取未定义的响应:

api request url:

var hit = 'http://<domain>/api20/account2_public/signupface?FirstName=Jeevan2&LastName=Verma2&ScreenName=mssBoi2&Email=mss.abcd@gmail.com&Password=123';

使用'dataType'进行Ajax跨域调用:'script':

$.ajax({
    type: "GET",
    url: hit,
    dataType: "script",
    cache: true,
    headers: myheaders,
    success: function (data){

        alert(data); // here my response is undefined I need help here

    },
    error: function (header, status, error) {
        console.log(arguments);
        console.log('ajax answer post returned error ' + header + ' ' + status + ' ' + error);
    },
    complete: function (data) {
        alert(toSource(data));
    } 
});

我的浏览器控制台错误,这是我要求的响应:

SyntaxError: missing ; before statement


{"Item": {"error": "Account with that e-mail already exists"}, "Sta

不理解是!!!如果我的请求成功为什么我的响应数据未定义,我使用jsonp尝试相同的脚本,并且在那里得到了parrseerror,没有调用jQuery回调,我尝试了stackoverflow的答案,在那里讨论并在花了几个小时后问这个问题,请帮助我因为我让我的成功事件运行并且需要在控制台中响应,但有线响应数据警报为“未定义”。

谢谢你

1 个答案:

答案 0 :(得分:0)

您的dataType设置为script,但您看起来有JSON作为回应。如docs中所述:

  

“script”:将响应评估为JavaScript并将其作为plain返回   文本。通过附加查询字符串参数禁用缓存,   “_ = [TIMESTAMP]”,指向URL,除非缓存选项设置为true。   注意:这会将POST转换为GET以获取远程域请求。

您应该将dataType更改为json

  

“json”:将响应评估为JSON并返回JavaScript   宾语。 JSON数据以严格的方式解析;任何格式错误的JSON   被拒绝并抛出一个解析错误。截至jQuery 1.9,一个空的   回应也被拒绝;服务器应返回null响应   或{}代替。 (有关正确JSON的更多信息,请参阅json.org   格式化。)

您将在success内将对象作为对象。

另请注意,您的服务会返回text/plain格式的数据。如果您将其更改为application/json,jQuery将“猜测”dataType本身,您可以在$.ajax()调用中省略它(我自己更喜欢指定dataType)。