9

我正在编写一个从我的 JSON Python web 服务请求数据的 AJAX 函数。我的 AJAX 请求如下所示:

  url = "http://localhost:8001/blah"
  $.ajax({
      url: url,
      type: 'get',
      dataType: 'jsonp',
      success: function(data) {
          console.log('hi')
      }
  });

现在,我的 python web 服务有一个函数来处理对 '/blah' 的请求,它具有以下返回语句:

return json.dumps({'a':1, 'b':2 })

我的 AJAX 函数未成功从我的 Python Web 服务检索响应,但在 Firebug 中没有收到任何错误。我的网络服务或 javascript 做错了什么?

4

4 回答 4

9

当您使用 Jquery 的 JSONP 数据类型时会发生什么情况,回调函数名称作为 GET 参数作为 URL 的一部分发送,因此您实际上是在查询类似“http://localhost:8001/blah?callback=json125348274839”的内容.

您的 Web 服务器的响应应如下所示:

    return "%s({'a':1, 'b':2 })" % _GET_PARAMS('callback')

所以你的网络服务器会返回类似“json125348274839({'a':1, 'b':2 })”的东西

希望有帮助!

于 2012-07-20T07:57:42.567 回答
6

扎克明白了。我的 javascript 是正确的。我将我的 python return 语句更改为以下内容:

callback = request.args.get('callback')
return '{0}({1})'.format(callback, {'a':1, 'b':2})
于 2012-07-22T19:16:05.497 回答
1

在 Python Web 服务中打开(或添加)日志记录。检查您的网络服务器日志...您是否收到来自您的 javascript 客户端的请求?您的 Web 服务器是否记录它正在返回响应?

可能取决于您使用的框架。它就像从处理函数返回一个字符串一样简单吗?也许处理程序应该返回一个字符串列表,并且因为它没有得到一个列表,所以它没有向客户端返回任何内容。在您的 Web 服务器日志中查找错误。

于 2012-07-20T07:50:25.573 回答
1

您忘记了第一行的结束引号和分号 =)

如果没有帮助,请检查以下内容:

  1. 项目清单
  2. 你用什么作为python服务?Django,烧瓶,还有什么?也许你可以提供提供 python 代码?
  3. 此外,查看“Net”Firebug 选项卡,并确保实际处理了对“url”的请求(不是返回 404 或 50x 代码,而是 200),检查“响应”子选项卡。

希望这可以帮助!

于 2012-07-20T07:51:10.910 回答