Jquery 获取请求时AJAX失败:JSONP

Jquery 获取请求时AJAX失败:JSONP,jquery,ajax,json,jsonp,Jquery,Ajax,Json,Jsonp,我在运行django应用程序的同一台主机上运行一个rest服务器(python瓶)。 在我的django应用程序中,我正在使用ajax执行get请求,但是请求失败了,尽管我可以在rest服务器上看到请求成功的状态(返回代码200,成功) 我的Ajax代码: $.ajax({ url: 'http://hostname:port/ListVms/', crossDomain: true,

我在运行django应用程序的同一台主机上运行一个rest服务器(python瓶)。 在我的django应用程序中,我正在使用ajax执行get请求,但是请求失败了,尽管我可以在rest服务器上看到请求成功的状态(返回代码200,成功)

我的Ajax代码:

            $.ajax({
               url: 'http://hostname:port/ListVms/',
               crossDomain: true, 
               contentType: "application/json",
               dataType: 'jsonp',
               success: function(data) {
                   alert('worked');
               },
               error: function() {
                   alert("Sorry, error retrieving!");
               }
           });
Python Rest方法:

            @route('/ListVms/', method='GET')
            def get_event():
                return json.dumps(JS)
rest服务的输出:

            [22/Aug/2012 10:25:45] "GET /ListVms/?callback=jQuery17102901058990901989_1345656355311&_=1345656355356 HTTP/1.1" 200 44

我猜您的服务器正在返回JSON,如下所示:

{ "abc": 123 }
<script src="http://hostname:port/ListVms/?callback=jQuery17102901058990901989_1345656355311"></srcipt>
if queryString.callback
  render queryString.callback + "(" + jsonData + ")"
else
  render jsonData
此格式与JSONP不兼容。JSONP需要一个将JSON传递给的回调函数。回调函数在该查询字符串中传递给服务器

因此,使用JSONP,浏览器会弹出一个脚本标记,如下所示:

{ "abc": 123 }
<script src="http://hostname:port/ListVms/?callback=jQuery17102901058990901989_1345656355311"></srcipt>
if queryString.callback
  render queryString.callback + "(" + jsonData + ")"
else
  render jsonData
通常,提供JSON并希望支持JSONP的服务器有一个类似于以下内容的条件:

{ "abc": 123 }
<script src="http://hostname:port/ListVms/?callback=jQuery17102901058990901989_1345656355311"></srcipt>
if queryString.callback
  render queryString.callback + "(" + jsonData + ")"
else
  render jsonData

服务器返回什么数据?jQuery要求将数据包装在回调函数中,数据是否包装在回调函数中?