【问题标题】:Returning ajax response from django从 django 返回 ajax 响应
【发布时间】:2014-01-05 03:31:17
【问题描述】:

我已经用尽了我的大脑试图让一些简单的工作。我想用 django 将表单的行为从重新加载后更改为 ajax。我就是无法让它工作。

表格是这样的:

<form id="form1" action="/myurl/" method="post" onsubmit="doexchange">
<input id="input1" type="hidden" name="serializedData" value=""/>
<button id="button1" type="submit">render<button/>
</form>

使用 jquery,我有类似的东西:

function doexchange(){
var dataBuffer = new Object();
dataBuffer = myCollecter(dataBuffer);

$("#input1").attr("value", JSON.stringify(dataBuffer));

$.get($("#form1").attr("action"), 
      {serializedData: $("#input1").attr("value")}, 
      function(data){
        alert('yes' + data);
      });

return false;
}

现在返回 false 是为了防止原始表单自己进行 POST。

在服务器端,我有一些非常简单的东西,例如:

def handler(request, data):
    return HttpResponse('{}', 'application/json')

客户端通过ajax请求成功将数据发送到服务器。服务器还将 {} 空括号返回给客户端。但不是回调函数被调用、查看和提醒,而是整个页面重新加载,我在新页面上只看到 {}。

正如我所说,我尝试了很多不同的东西,但我认为我错过了一些重要的东西......有什么想法吗?哦,我正在使用最新的 Mozilla firefox,但我认为这不是特定于浏览器的问题...

【问题讨论】:

    标签: javascript jquery ajax django


    【解决方案1】:

    我认为解决方案不需要非常复杂就能达到您想要的结果。考虑以下几点:

    一个看起来像这样的页面:

    <a class="btn" onclick="doexchange">render</a>
    

    如下所示的 JavaScript:

    function doexchange(){
        var dataBuffer = myCollecter(dataBuffer);
    
        $.get('/myurl/', {serializedData: JSON.stringify(dataBuffer)}, function(data) {
            alert('yes' + data);
        });
    }
    

    【讨论】:

      【解决方案2】:

      尝试在您的 javascript 中绑定到表单提交。

      $('#form1').bind('submit', function( e ){
        e.preventDefault();
        var form=$(this),
          input=form.find('input[name="serializedData"]');
        $.ajax({
         //
        });
      

      【讨论】:

        猜你喜欢
        • 2015-07-08
        • 2015-03-29
        • 2019-05-26
        • 2015-05-04
        • 1970-01-01
        • 1970-01-01
        • 2018-03-24
        • 2015-07-01
        • 2018-06-08
        相关资源
        最近更新 更多