2011-10-21 35 views
-1

我有两个函数将不同的数据集提交给同一页。一个功能可以正常工作,但另一个功能不会发送发布数据。这里是代码:Jquery .post不能在一个函数上工作,在另一个函数上工作

function sortManufacturer() { 
     showLoading(); 
     var orderList = ''; 
     orderedNodes = document.getElementById("sortable_list").getElementsByTagName("li"); 
      for (var i=0;i < orderedNodes.length;i++) { 
       orderList += orderedNodes[i].getAttribute('recordid') + ','; 
      } 
$.post('save_sort_order.php', {type:'manufacturer', order: orderList}, 
     function() { 
     hideLoading(); 
     $(".saved").dialog("open"); 
     } 
);} 
    function editManufacturer() { 
     showLoading(); 
     var fields = $("form#edit_manufacturer").serializeArray(); 
$.post('save_sort_order.php', {manActive: fields}, 
     function(data) { 
     hideLoading(); 
     $(".saved").dialog("open"); 
     } 
);} 

这也行不通,没有警报说成功,没有警报抛出一个错误。只是重新加载页面。:

function editManufacturer() { 
    $.ajax({ 
    type: "POST", 
    url: "save_sort_order.php", 
    data: "hey", 
    success: function(){ 
     alert("success"); 
    }, 
    error: function(request, status, error) { 
     var result = JSON.parse(request.responseText); 
     alert(result.message); 
    } 
}); 
    } 

在网络面板下没有任何发布数据在Firebug中发送。第一个功能正常工作,第二个功能没有发送。如果我把警报(“之后”);在函数关闭之前的$ .post之后,它可以正常工作。

+2

哪个功能不工作,哪个功能? – Crontab

+1

您是否检查过萤火虫以查看请求是否已发送?你的意思是它永远不会被发送,或者你没有得到回应?使用萤火虫,将console.log(“某些标识符”)放在令人困扰的线路之间,以找出执行的内容和不执行的内容。 – Whetstone

+1

什么意思是“不起作用”?你在期待什么,你得到的结果是什么? –

回答

1

我会先加一个error handler$.post,看看它返回的信息。 也要看firebug net panel看到请求和响应

http://getfirebug.com/network

http://getfirebug.com/wiki/index.php/Net_Panel

编辑

参考线: - jQuery AJAX error handling

改变你的公司如何向AJAX语法在那边。它更具可读性。

也与

error: function(request, status, error) { 
     var result = JSON.parse(request.responseText); 
     alert(result.message); 
    }); 
+0

它不会在网络面板中显示任何POST请求,所以它甚至不会发送它。 – Kyle

+0

尝试编辑答案 – Jags

+0

感谢您的帮助。我尝试了你所说的话,但没有警报弹出,既没有成功,也没有出现错误。我已经使用新功能更新了原始帖子,供您查看。 – Kyle

0

名称/值对,您还缠绕成manActive字段的serializeArray()返回阵列替换错误处理程序。只需通过fields,它应该工作。

编辑:我也支持OP的问题。虽然我可能会注意到这个问题,但您应该首先将调试工作放入其中。例如在Firebug或Fiddler中检查您的发布数据。 “不起作用”实际上不是对问题的描述。

+0

这不是问题,我已经花费了数小时的时间进行调试。如果我添加警报(“”);紧接在$ .POST之后并在函数的右括号之前,它工作正常。除了屏幕上有空白警报。所有数据都会提交并返回,只要我在$ .POST之后有一个提醒 – Kyle

0

我会设置每条线上的对象的警报。这有点乏味,但通常起作用。如果您使用的对象可能为空或数据类型错误,并且jQuery预期它会失败,它将自动失败。确保getElementsById工作,orderList是预期的,等等。它也可能在php中失败。

相关问题