0

我有一个我正在编写的应用程序,在它的一个方面,您单击复选标记以完成任务,显示一个弹出窗口(使用引导程序),您输入您的时间,然后将其发送到 PHP页面来更新数据库。我正在使用 FF (firebug) 来查看帖子。它变红了,但没有给我一个错误。我唯一要做的就是在 PHP 页面上回显“sup”,它仍然显示错误,我不知道为什么。

这是我最初的点击功能:

$('.complete').on('click', function(event) {
    var id = $(this).attr('data-id');
    var tr = $(this).parent().parent();
    var span = $(tr).children('td.task-name');

    var r = (confirm('Are you sure you want to complete this task?'));

    if (r){
        addHours(id);
    } else {
        return false;
    } // end else
});

这很好用,它会触发我的下一个函数,它实际上会触发引导模式:

function addHours(id) {

    var url = 'load/hours.php?id='+id;

    $.get(url, function(data) {

        $('<div class="modal hide fade in" id="completeTask">' + data + '</div>').modal()
        .on('shown', function() {

            pendingTask(id);

        }); // end callback 

        }).success(function() { 

        $('input:text:visible:first').focus(); 
    });

} // end function

这也有效,并且模态显示得很好。但是,每当我将表单发布到我的逻辑页面时,它都会无缘无故地失败。这是将表单发布到逻辑页面的功能:

function pendingTask(id) {

$('.addHours').on('click', function(event) {

        var formData = $('form#CompleteTask').serializeObject();
            $.ajax({
                  url:'logic/complete-with-hours.php',
                  type: 'POST', 
                  dataType: 'json',
                  data: formData,
                  success: function(data) {
                      if (data.status == 'error') {     
                          $(this).attr('checked', false);
                          //location.reload();
                      } // end if       
                      else  { 
                          $(this).attr('checked', true);
                          //location.reload();
                      } // end else      
                  },
                dataType: 'json'
            });     

}); // end click

} // end function

当它被触发时,我在我的 Firebug 控制台中看到了这个: 控制台没有错误代码,请记住该页面上唯一的内容是 echo

我知道这是很多信息,但我想提供尽可能多的信息。应用程序中的所有其他帖子功能都运行良好。就这一个。任何帮助,将不胜感激。

提前致谢。

4

4 回答 4

0

jQuery.ajax data参数采用键值对的简单对象。问题可能是由创建的对象serializeObject()太复杂了。如果是这种情况,您可以处理formData对象以简化它或尝试data: JSON.stringify(formData)

于 2013-05-10T19:12:30.513 回答
0

jQuery 中是否存在 serializeObject()?那是你自己写的函数吗?您可以使用 jQuery 函数(如 serialize() 或 serializeArray() )来序列化表单数据并查看它是如何进行的。

于 2013-05-10T19:20:51.497 回答
0

通常红色表示404响应错误。在这个屏幕截图中我们无法分辨。通过直接调用请求的页面并获得正确的响应来检查您的 php 代码。

还要确保您的dataTypeisapplication/json 是正确的 mime 类型标头(尽管我认为这不会导致错误)。你也应该只拥有dataType一次(你在底部再次拥有它)

于 2013-05-10T21:14:20.557 回答
0

我想到了。我将帖子类型从上面输入的结构更改为标准帖子:

$("#CompleteTask").validate({

                submitHandler: function(form) {

                    var hours = $('#hours').val();

                        $.post('logic/complete-with-hours.php', {'hours': hours, 'id':id}, 

                            function(data){ 

                                if (data.status == 'success') { 
                                    $(checkmark).attr('checked', false);
                                    $('.message').html(data.message).addClass('success').show();                                        
                                } // end if 

                                if (data.status == 'error') { 
                                    $('.message').html(data.message).addClass('error').show();  
                                } // end else                                           
                            },
                        "json"
                        ); //end POST                                                   
                } // end submit handler 
            }); // end validate

这似乎奏效了

于 2013-05-14T20:48:22.353 回答