2008-11-15 60 views
0

听起来像一个奇怪的问题,但说我有这样的事情:如何取消服务器端的ajax查询(来自jquery)?

$.post("/myajax.php", 
     { "param1": value1, "param2": value2 }, 
     function(data, status) { 
      if(status == "success") { 
       $("#someid").html(data); 
      } 
     }, "html"); 

虽然myajax.php做任何需要做的,它决定了它不需要做任何改动#someid。如果它刚刚返回,那么someid元素会空白,但我想让它保持独立。怎样才能以这样的方式返回php查询status != "success"

回答

4

检查返回的数据不是更简单吗?

$.post("/myajax.php", { 
     "param1": value1, 
     "param2": value2 
    }, function(data, status) { 
     if(data != "") { 
      $("#someid").html(data); 
     } 
    }, 
    "html" 
); 
+0

是和否,都是非常基本的想法,我猜,返回一个非200 OK似乎更“正确”,因为它改变了状态码。 – Owen 2008-11-15 00:55:26

4

ajax调用将任何200 OK视为成功。因此您可以从您的PHP脚本中返回其他内容来触发您的ajax中的错误。

here是一些其他状态代码,以防您想选择更合适的事情。

编辑:我不一定这种做法不以为然,但我仍然倾向更加趋向于状态消息操作(HTTP状态),而不是响应主体。

我的想法是,在所提及的后期交易中,您正在更新资源。人们可以合理地假定你期望的一二的两大麻烦发生(在“成功”条件):

  1. 200 OK是指内容被张贴没有问题,并将得到的反应通常是显示新的内容。 ajax方法通过允许您获取响应主体来更新您的UI来“强制执行”此行为。

  2. 在更新不需要完成的情况下,200 OK也可以(因为请求按预期进行处理),但也许204 No Content更好,因为它表明请求已完成,但没有必要改变视图。我倾向于认为这与ajax调用更加联系,因为您可以忽略响应主体(因为没有响应主体),并根据状态进行操作(204?更新UI以表示“不需要更改”或类似)

相关问题