【问题标题】:how to get the back data from a django view using ajax如何使用ajax从django视图中获取返回数据
【发布时间】:2010-04-16 09:01:56
【问题描述】:

我的 ajax 是:

$('#save').click(function(){
            $.post("http://127.0.0.1:8080/sss",
           function(data){
             alert(data);
           });
            })

django 视图是:

def sss(request):
    return HttpResponse('ddddddddddd')

如何从视图 'sss' 中获取一些数据

谢谢

【问题讨论】:

  • 你不是用这段代码获取数据吗?
  • 上面的代码有什么问题?什么不工作?
  • 我的 ajax 在域 127.0.0.1:8000 而不是 8080 ,8080 是我的另一个 django 站点
  • 那么您的 AJAX 是从 127.0.0.1:8000 提供服务的,而您的 Django 站点是在 127.0.0.1:8080 上运行的?对吗?

标签: jquery ajax django


【解决方案1】:

您遇到了cross domain issues。您不能对不同的域执行 ajax 调用。您可以改用JSONP(查看文档中的 Flickr 示例,它演示了跨域 ajax 请求)。您的服务器需要将数据作为 JSONP 字符串发送:

def sss(request):
    return HttpResponse('someCallbackName({ Data = 12345 })')

其中someCallbackName 应该是动态的并作为请求参数传递。重要的一点是 JSONP 仅适用于 GET 方法,不适用于 POST

【讨论】:

    【解决方案2】:

    进行跨域脚本的一个技巧是使用 urlopen 读取数据并返回您收到的数据

    在域 1 上

    import urlllib2
    
    def getdata(req)
        redirectstr = "http://domain2.com/call/that/returns/data/"
        #make call to domain2
        resp = urllib2.urlopen(redirectstr)
        return HttpResponse( resp.whatever() )
    

    【讨论】:

      猜你喜欢
      • 2018-10-06
      • 2016-02-08
      • 2012-01-18
      • 2020-05-19
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      相关资源
      最近更新 更多