【问题标题】:Ajax post to local URLAjax 发布到本地 URL
【发布时间】:2013-08-06 23:46:24
【问题描述】:

我真的不知道如何做到这一点。我已经在互联网上搜索过,但可能是在错误的区域使用长关键字。

我想运行一个 RESTful api。

$.ajax({
    type: "POST",
    url: "https//my.url/",
    data: { ...some json... }
    }).done(function( msg ) {
        alert( "CREATE EVENT Data Saved: " + msg );
        });

我知道我不能从 ajax 进行跨域调用,所以我想将 ajax 发布到本地 URL,然后将服务器代码 HTTP POST 到远程服务器。

将 ajax 发布到本地 url 是什么样子的?本地 URL 页面是什么样的?

我正在使用 Django 和 Javscript 编程

【问题讨论】:

    标签: javascript jquery django json


    【解决方案1】:

    就像 Vaishak 的回答一样。你在urls.py中映射视图:

    url(r'^postdata$', 'name_of_your_app.views.postdata')
    

    然后你用 jQuery 像这样调用它:

    $.ajax({
       type: "POST",
       url: "/postdata/",
       // ...
    

    【讨论】:

    • 我对“application.views.postdatatoserver”的含义感到困惑。这是做什么的,我的views.py应该是什么样子?目前:def postdata(request): return render(request, 'livestream/postdata.html')
    • 谢谢。现在有道理了。 Json 目前是空白的,但我现在要开始处理它
    • 不要忘记在视图的返回中传递 json 内容类型。如果您使用的是表格。不要忘记在你的 ajax 调用和模板中设置 CSRF 令牌
    【解决方案2】:

    如果您查看浏览器控制台,您可能会发现一个异常,指出请求因Same Origin Policy 违规而被阻止

    如果加载页面的域与发出请求的域不同,则由于Same Origin Policy 限制,它将无法工作。

    如果服务器支持CORS,那么您可以解决它。

    【讨论】:

      【解决方案3】:

      如果您要发布数据,则可以进行跨域调用。由于Same Origin Policy,您无法load 或从其他页面获取数据。

      如果您决定按照您描述的方式进行操作,即发布到本地 URL,然后让服务器发出下一个请求,那么您不需要做任何特别的事情。 您的本地 URL 是您应用程序中的另一个页面/方法。

      在您的urls.py 中映射需要处理此请求的方法并将请求转发给该方法。

      例子:

      如果urls.py 条目如下所示

      url(r'^postdata$', 'application.views.postdatatoserver')
      

      那么您在测试服务器上的 URL 将是

      http://localhost:8000/postdata
      

      【讨论】:

        猜你喜欢
        • 2010-12-16
        • 1970-01-01
        • 2017-09-22
        • 2017-10-18
        • 2015-10-10
        • 2013-11-28
        • 2015-05-20
        • 2022-01-19
        • 2018-04-04
        相关资源
        最近更新 更多