AJAX用于更新页面失败

时间:2011-03-03 13:42:01

标签: php ajax

我使用以下ajax更新页面上的信息,然后将页面重新提交到数据库中。每次在Error参数处停止时脚本都会失败。任何人都可以看到我出错的地方。

AJAX -

function bookingdetails() {
    var date = <?php the_time('Y-m-d');?>;
    var airport = $('#FLTairport').val();
    var number = $('#FLTnumber').val();
    var time = $('#FLTtime').val();

    var dataString = 'date=' + date + '&airport=' + airport + '&number=' + number + '&time=' + time;

    $.ajax({
        type: 'POST',
        url: '<?php echo $thisposturl;?>?update',
        data: dataString,
        beforeSend: function() {
            $('#airloader').html('<img id="BKloader" src="http://www.divethegap.com/update/z-images/structure/icons/blockloader.gif" alt="" width="40" height="30"/>');
        },
        error: function() {
            $('#airloader').html('Failed to update booking, try again');
        },
        dataType:'json',
        success: function(data) {
            $('#date').val(data.date);
            $('#FLTnumber').val(data.FLTnumber);
            $('#airloader').val(data.FLTnumber);
            $('#FLTairport').val(data.FLTairport);
            $('#FLTdate').val(data.FLTdate);
            $('#FLTtime').val(data.FLTtime);
        }


    });
}

PHP -

<?php

function __update_post_meta( $post_id, $field_name, $value = '' )
{
    if ( empty( $value ) OR ! $value )
    {
        delete_post_meta( $post_id, $field_name );
    }
    elseif ( ! get_post_meta( $post_id, $field_name ) )
    {
        add_post_meta( $post_id, $field_name, $value );
    }
    else
    {
        update_post_meta( $post_id, $field_name, $value );
    }
}

if ( is_user_logged_in() ) {
    $my_post = array(
        'ID' => get_the_ID(),
        'post_date' => $_POST['date'],
        );
    $the_post_id = wp_update_post( $my_post );

    __update_post_meta( $the_post_id, 'FLTairport', $_POST['airport'] );
    __update_post_meta( $the_post_id, 'FLTnumber', $_POST['number'] );
    __update_post_meta( $the_post_id, 'FLTtime', $_POST['time'] );
}

$FLTdate = get_the_time('d/m/Y');
$date = get_the_time('Y-m-d');
$FLTairport = $_POST['airport'];
$FLTnumber = $_POST['number'];
$FLTtime = $_POST['time'];

echo json_encode( array('FLTdate'=>$FLTdate, 'date'=>$date, 'FLTairport'=>$FLTairport, 'FLTnumber'=>$FLTnumber, 'FLTtime'=>$FLTtime));
?>

有什么想法吗?

非凡

2 个答案:

答案 0 :(得分:0)

你能看到你的PHP脚本发送了什么吗?我建议在firefox中使用firebug来查看你的javascript正在回归的内容。我没有看到它为你的json输出成功参数的位置。

答案 1 :(得分:0)

jQuery Documentation显示可以在错误回调中使用的3个参数,这在调试错误时非常有用。

来自文档

enter image description here

所以考虑到这一点,尝试改变你的错误回调,就像这样......

error: function(xhr,ts,et) {
    $('#airloader').html('Failed to update booking.');
    $('#airloader').append('Error Text - '+ts);
},

你应该看到具体的错误,这应该让你找到正确的路径来修复它。