跨域调用永远不会获得附加的jsonp回调

时间:2013-02-27 19:42:16

标签: jquery backbone.js couchdb jsonp

我正在尝试执行GET请求以从CouchDB中提取文档。我得到了跨域请求的典型“xmlhttprequest无法加载...”错误。但是,即使在创建jQuery.ajax对象并将其数据类型设置为jsonp并将crossdomain设置为true时,此错误仍然存​​在。它似乎永远不会附加任何回调到我的网址。

代码:

var ajaxOptions = new $.ajax({
        url: 'http://localhost:5984/',
        crossDomain: true,
        dataType: 'jsonp'
    });

然后我调用jquery.couch.js来检索文档并格式化url:

$.couch.db(options.dbName).openDoc(docId, options, ajaxOptions);

有任何明显的问题吗?

2 个答案:

答案 0 :(得分:1)

我发现我需要的jquery ajax参数应该在jquery.couch调用的ajaxOptions部分设置。所以它看起来像这样(并且有效):

$.couch.db(options.dbName).openDoc(docId, options, {
        dataType: 'jsonp',
        success: function (data) {
            console.log(data);
        }
    });

将ajaxOptions作为函数传递取代了我自己创建jquery.ajax对象。

答案 1 :(得分:0)

尝试像

这样的ajax请求
$.ajax({
  type : 'POST',
  url : 'http://localhost:5984/',
  dataType : "jsonp",
  contentType : "application/json",
  success : function(data) {
    //function body
  }
});