使用AJAX发布返回值?

时间:2014-03-08 00:49:33

标签: javascript php jquery ajax post

我正在使用Code Igniter,我的视图中有以下Javascript函数。我试图从控制器中的处理程序函数回显诸如“错误”之类的值,但是“成功”代码总是在下面的函数中运行。

我是否使用echo或return来响应AJAX帖子?成功和失败会带来什么价值?

<script>
function removeDatacenter(id)
{
    var cfm = confirm("Do you wish to delete this datacenter?");

    if (cfm==true)
    {
        $.ajax({
            type: "POST",
            url: "<?=base_url()?>datacenters/remove_handler.php",
            data: { id: id },
            success: function(result)
            {
                document.location.href = document.URL + "?result=success";
            },
            error: function(result)
            {
                document.location.href = document.URL + "?result=failed";
            }}
        );
    }
};
</script>

2 个答案:

答案 0 :(得分:1)

如果成功将ajax-request发送到您的脚本,则成功方法会运行。它没有说明请求返回的内容。

如果您只是在PHP脚本中执行echo "error";,则可以检查success - 方法中的值,如下所示:

success: function(response) {
    if (response == "error") {
        document.location.href = document.URL + "?result=failed";
    }
    else {
        document.location.href = document.URL + "?result=success";
    }
}

编辑:人们倾向于在json_encode - 代码中使用PHP并将json-string解码为javascript代码中的对象。这样,您就可以从脚本中发送更多结构化数据。

答案 1 :(得分:0)

AJAX会看到你回复的任何文字都是成功的。即使它是“错误”这个词。为了触发Javascript错误处理程序,您需要触发某种实际的HTTP错误。如果您只是为了测试目的而尝试触发错误,则可能会在控制器中引发异常。或者将AJAX请求指向服务器上不存在的URL(然后您会收到404错误)。

顺便说一句,你在Javascript中的错误回调在API上略有偏差。根据您在错误处理程序中执行的操作,这可能无关紧要,但这是完整的调用:

error: function(xmlHttpRequest, textStatus, errorThrown) {
  //handle error here
}