我正在使用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>
答案 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
}