用jquery检查PHP中的结果/ echo是否以“abc”开头

时间:2015-06-15 05:24:08

标签: php jquery ajax

我使用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/)并回显整个消息?

3 个答案:

答案 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的donefail回调来分别处理这两种情况:

$.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开始返回0Error:字符串中找到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