我使用jquery和ajax提交表单而不重新加载页面,然后根据结果(无论是成功还是错误)我在两个不同的div中打印消息。由于ajax中的成功和错误只检查客户端/服务器连接,因此当查询成功时我会回复PHP中的一些内容,并根据我的条件决定如何处理消息。 Jquery / ajax部分看起来像那样(通常我使用两个不同的div,但为了简化示例,我将使用警报):
success: function (result) {
if (result == 'success') {
alert("Success!");
} else {
alert("There was an error.");
}
},
这很有效,但我想提高它的可用性。
现在问题是:我可以在if (result ==
部分使用像str.match这样的东西吗?例如,如果运行查询时遇到一些问题,我会在php echo "Error: >error description here<";
中回显我是否可以在if条件中以某种方式使用str.match(/^Error/)
并回显整个消息?
答案 0 :(得分:18)
不要使用字符串匹配来完成此任务。使用HTTP响应代码 - 这就是他们所需要的! PHP中的http_response_code
函数是为了这个目的而设计的:
<?php
if ( /* error condition */ ) {
http_response_code(400); // "Bad request" response code
echo 'Invalid parameters';
}
else {
echo 'Success'; // response code is 200 (OK) by default
}
然后你可以使用jQuery的done
和fail
回调来分别处理这两种情况:
$.ajax(url, params)
.done(function(response) { alert('all good: ' + response); })
.fail(function(response) { alert('error: ' + response); })
答案 1 :(得分:8)
要检查message
是否以Error:
开头,您可以使用indexOf
:
if (result.indexOf('Error:') === 0) {
// Starts with `Error:`
}
indexOf
将从index
开始返回0
,Error:
字符串中找到result
。
参考:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
indexOf()
方法返回第一次出现的指定值的调用String对象中的索引,从fromIndex开始搜索。如果找不到值,则返回-1。
答案 2 :(得分:2)
回答&#39;改善&#39;你问的一部分我会做一些JSON。
PHP:
//你的代码在这里创建一个关联数组,如下所示:
if($errors){
$data(
'results'=>'errors',
'message'=>'it failed'
);
}else{
$data(
'results'=>'success',
'message'=>'it worked'
);
}
echo json_encode($data);
然后你的js会像:
success: function (result) {
if (result.results == 'success') {
alert(result.message);
} else if (result.results == 'errors' {
alert(result.message);
}
},
相关:http://www.dyn-web.com/tutorials/php-js/json/array.php#assoc