Jquery .post没有在一个函数上工作,在另一个函数上工作

时间:2011-10-21 15:31:18

标签: jquery

我有两个函数可以将不同的数据集提交到同一页面。一个功能正常,但另一个功能不发送帖子数据。这是代码:

    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);
   }
});
    }

Net面板下的Firebug中没有发送任何帖子数据。第一个功能正常,第二个功能没有被发送。如果我发出警报(“之后”);在函数结束前的$ .post之后,它工作正常。

3 个答案:

答案 0 :(得分: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);
    });

答案 1 :(得分:0)

serializeArray()返回的名称/值对数组,您将其另外包含到manActive字段中。只需按原样传递fields即可。

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

答案 2 :(得分:0)

我会在每一行的对象上设置警报。这有点乏味但通常有效。如果你使用的对象可能是null或者是错误的数据类型而jQuery期望它,那么它将无声地失败。确保getElementsById工作,orderList是预期的,等等。它也可能在php中失败。