Php 如何在服务器端取消ajax查询(来自jquery)?

Php 如何在服务器端取消ajax查询(来自jquery)?,php,jquery,ajax,Php,Jquery,Ajax,听起来是个奇怪的问题,但我有这样的问题: $.post( "/myajax.php", { "param1": value1, "param2": value2 }, function( data, status ) { if( status == "success" ) { $("#someid").html( data ); } }, "html" ); 虽然mya

听起来是个奇怪的问题,但我有这样的问题:

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

虽然myajax.php正在做它需要做的任何事情,但它决定不需要对
#someid
进行任何更改。如果它刚刚返回,
someid
元素将被置空,但我想不去管它。php查询如何以
status!=“成功”

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

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

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

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

编辑:我并不一定不同意这种方法,但我仍然更倾向于操作状态消息(http状态),而不是响应主体

我的想法是,在前面提到的后期事务中,您正在更新一个资源。你可以合理地假设你期望两件事中的一件发生(在“成功”条件下):

  • 200 OK意味着内容发布时没有问题,结果通常是显示新内容。ajax方法通过允许您获取响应主体以更新UI来“强制”这种行为

  • 在不需要进行更新的场景中,200 OK也可以(请求按预期处理),但可能更好,因为它表明请求已完成,但不需要更改视图。我倾向于相信这更符合ajax调用,因为您可以忽略响应主体(因为没有响应主体)并对状态进行操作(204?更新UI以表示“无需更改”或类似)


  • 是和否,我想这两个都是非常基本的想法,返回一个非200 OK似乎更“正确”,因为它改变了状态代码。但是你如何区分它与真正的错误呢?我认为正确完成请求很重要。@Eran-我同意。使用数据参数意味着您正在根据服务器端代码的逻辑进行过滤(正确),而不是HTTP事务(不正确)。此外,如果您返回4xx或5xx错误代码,然后决定在$.ajax()上为失败的ajax请求添加错误处理程序,你最终会打破现有的逻辑。我最初接受欧文的答案,但经过思考,我认为我更喜欢埃兰的想法。它们都有效,FWIW,但我同意这更干净。