如何使用jsonp从跨域获取响应

时间:2013-02-13 05:24:55

标签: ajax json cross-domain jsonp

我正在跨域进行AJAX登录,并且请求已正确发送并从其他域获取响应,但我的onSuccess函数未被调用。 我已经尝试在请求中编写onsuccess,如

sucess : function(){}

但它也没有被调用。

我的代码段:

new Ajax.JSONRequest(this.preCheckUrl, {
    callbackParamName: "jsoncallback",
    parameters: {
    userEmail: this.userEmail, userPassword: this.userPassword, format: 'json'
  },

  onSuccess:function(response) {
        alert('hello');
  } });

-Thanx。

1 个答案:

答案 0 :(得分:0)

根据文档,您的请求看起来不错。 来自README.md

  

处理失败

     

由于无法检查我们使用JSONP技术发出请求后会发生什么,我们不得不对正在发生的事情做出明智的猜测。

     

此示例向无效的网址发出请求。由于在默认超时期限(10秒)内未调用回调,因此请求被“取消”,并且如果指定则调用onFailure回调。 Ajax.JSONResponse的状态为504,statusText为“Gateway Timeout”。

new Ajax.JSONRequest('http://api.flickr.com/services/feeds/asdfasdfasdfasdfasdfsdf', {
  callbackParamName: "jsoncallback",
  parameters: {
    tags: 'cat', tagmode: 'any', format: 'json'
  },
  onCreate: function(response) {
    console.log("2: create", response, response.responseJSON);
  },
  onSuccess: function(response) {
    console.log("2: success", response, response.responseJSON);
  },
  onFailure: function(response) {
    console.log("2: fail", response, response.responseJSON);
  },
  onComplete: function(response) {
    console.log("2: complete", response, response.responseJSON);
  }
});

所以,你应该添加额外的回调,看看出了什么问题。