【问题标题】:JSONP web service with python使用 python 的 JSONP Web 服务
【发布时间】:2012-07-19 11:09:03
【问题描述】:

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

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

目前,我的 python 网络服务有一个函数可以处理对“/blah”的请求,该函数具有以下返回语句:

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

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

【问题讨论】:

    标签: python json


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      希望这会有所帮助!

      【讨论】:

        【解决方案3】:

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

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

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

        所以您的网络服务器将返回类似“json125348274839({'a':1, 'b':2 })”的内容

        希望有帮助!

        【讨论】:

          【解决方案4】:

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

          callback = request.args.get('callback')
          return '{0}({1})'.format(callback, {'a':1, 'b':2})
          

          【讨论】:

            猜你喜欢
            • 2014-07-13
            • 2013-04-18
            • 2012-09-14
            • 2015-01-03
            • 2015-08-22
            • 2012-02-11
            • 2010-10-18
            • 2013-04-03
            相关资源
            最近更新 更多