使用带有IF语句的jQuery-ajax响应

时间:2014-10-25 13:10:59

标签: javascript jquery

我使用jquery-ajax将数据发送到php。成功或失败后,php会发回响应。到目前为止一切正常。现在我的问题是如何在jquery中使用if语句来使用响应来执行某些操作?

参见示例:

  $.post("php/send.php",
     { 
       email:$( '#email' ).val(),
       name:$( '#name' ).val()
     },
     function(response) {
       alert(response) // shows "Error!"
       if (response != "" || response != "Error!") {
          //do A...
       } else {
          //do B...
       }
   )};

我的if语句不起作用。甚至来自php的响应都是"错误!"它会 //做一个。我该怎么解决这个问题?

3 个答案:

答案 0 :(得分:4)

在if条件中,如果response不是空字符串,则短路OR(即||)左侧的表达式返回true。当响应="错误!",即。不是空的,||的第一部分变为真,//做A会执行。 ||的右边的表达式,在这种情况下是响应!="错误!",当||左边的表达式被忽略时是的。

答案 1 :(得分:1)

如果send.php的唯一输出类似于<?php echo "Error!"; ?>,并且我不知道它是否是拼写错误,但是$.post的右括号,那么发布的代码应该有效功能应该是});

方法1

良好的做法是使用json格式(json_encode())作为响应,例如:

<强> PHP

<?php

// if there is an error fill the error data
$response['error'] = 'Error message!';
// else fill the correct data
$response['data'] = [ 'foo' => 'Some data', 'bar' => 'Some other data' ];

header( 'Content-Type: application/json' );
die( json_encode( $response ) );
?>

<强> JS

$.post( "php/send.php", { email: $( '#email' ).val(), name: $( '#name' ).val() } )
    .done( function( response ) {
        if ( response.error ) {
            console.log( response.error );
            return;
        }                   
        console.log( response.data );               
    });

方法2

或者,可以手动设置HTTP响应代码(http_response_code()),以便调用jqXHR object fail()方法,如下所示:

<强> PHP

<?php

// if case of an error
http_response_code(400);
die( 'Error message!' );

?>

<强> JS

$.post( "php/send.php", { email: $( '#email' ).val(), name: $( '#name' ).val() } )
    .done( function( response ) {
        // success
    })
    .fail( function( jqXHR ) {
        console.log( jqXHR.responseText );
    });

答案 2 :(得分:-1)

通常用php页面的纯文本回复是不安全的,我建议你使用json进行php和ajax之间的通信,无论如何,你的代码似乎没问题,尝试添加一个{{1}到php中返回的字符串