我使用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的响应都是"错误!"它会 //做一个。我该怎么解决这个问题?
答案 0 :(得分:4)
在if条件中,如果response不是空字符串,则短路OR(即||)左侧的表达式返回true。当响应="错误!",即。不是空的,||的第一部分变为真,//做A会执行。 ||的右边的表达式,在这种情况下是响应!="错误!",当||左边的表达式被忽略时是的。
答案 1 :(得分:1)
如果send.php
的唯一输出类似于<?php echo "Error!"; ?>
,并且我不知道它是否是拼写错误,但是$.post
的右括号,那么发布的代码应该有效功能应该是});
良好的做法是使用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 );
});
或者,可以手动设置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中返回的字符串