如何在ajax调用中返回成功

时间:2014-04-30 13:28:25

标签: javascript php jquery ajax

我有一个从我的数据库中删除页面的ajax调用,但我不太确定如何返回成功并使用它:

我的ajax电话看起来像这样:

$('.delete_button').click(function() {
    $.ajax({
        url: 'delete_page.php',
        dataType: 'json',
        async: false,
        type: 'post',
        data: {
            page_id: id
        },
        succes:function() {
            alert('something');
            if (s.Err == false) {
                window.location.reload(true);
            }
        }, error:function(e){

        }
    });
});

在我的delete_page.php中,我有这个:

<?php
require 'core/init.php';    

$id = $_POST['page_id'];
$page_id = $id[0];

$delete_page = DB::getInstance()->delete('pages', array('id', '=', $page_id));

if ($delete_page) {
    $output['Err'] = false;
} else {
    $output['Err'] = true;
}

return json_encode($output);

确实删除了该页面,但它没有运行if语句,也没有提醒任何内容。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:6)

不要使用return,实际输出数据,使用正确的标题:

//return json_encode($output);
header('Content-Type: application/json');
echo json_encode($output);

答案 1 :(得分:2)

在PHP脚本中,您需要输出数据而不是返回数据:

header('Content-Type: application/json');
echo json_encode($output);

然后在您的javascript文件中,您需要检索数据:

success: function (data) { // It's success not succes, and you need the parameter
    alert('something');
    if (data.Err == false) {
        window.location.reload(true);
    }
}

答案 2 :(得分:0)

如果这是整个delete_page.php,则需要echo输出,而不仅仅是返回。

答案 3 :(得分:0)

这是一种稍微优雅的处理方式。

更新 delete_page.php 脚本,如下所示:

<?php

require 'core/init.php';    

$id = $_POST['page_id'];
$page_id = $id[0];

// Init
$output = array(
    'IsDeleted' = false,
    'LastError' = ''
);

// Delete
try {
    $output['IsDeleted'] = DB::getInstance()
                            ->delete('pages', array('id', '=', $page_id));
}
catch (Exception $ex) {
    $output['LastError'] = $ex->getMessage();
}

// Finished
echo json_encode($output);

?>

然后像这样更新你的ajax代码:

$.ajax({
    url: 'delete_page.php',
    dataType: 'json',
    async: false,
    type: 'post',
    data: {
        page_id: id
    },
    dataType: 'json',
    succes: function(result) {
        if (result.IsDeleted) {
            window.location.reload(true);
        } else {
            alert('Failed to delete. Last error: ' + result.LastError)
        }
    },
    error:function(e) {
    }
});