使用ajax将表单提交到远程php脚本时,是否可以检查远程脚本上发生的错误?

时间:2012-12-22 01:21:06

标签: php jquery ajax

我有一个字段,我提交到远程PHP脚本。该脚本发生错误。是否可以显示错误是什么以便附加它?

这就是我所拥有的:

<script>
<!--
var all="My information";
$.ajax({
type: "POST",
url: "myurl.php",
data: all,
success: function(html){
if(html == 'done'){
alert("working");
}else{
alert("something is wrong");
}
}
});
-->
</script>

我收到警告出错了因此我知道我的PHP脚本出错了。有没有办法显示这个错误?

7 个答案:

答案 0 :(得分:1)

如果你想在myurl.php上返回错误。这样做:

示例:

success: function(server_response)
{
 document.getElementById("resultdata").style.display = "block";
$('#resultdata').html(server_response).show();

}

在当前页面上进行一个名为resultdata的分区并设置display:none。它只会显示你是否有错误

您需要在myurl.php上使用if和else语句。

示例:

if($a == $b)
  {
    echo "sucess";
  }
  else
    {
       echo " failed";
    }

答案 1 :(得分:0)

您可以更好地打印html中的内容。如果显示错误设置为on,并且脚本中存在错误,它们将显示在响应中。

如果未显示错误,您可以添加以下代码以打开

上的错误显示
error_reporting(E_ALL);
ini_set('display_errors', '1');

答案 2 :(得分:0)

在php.ini文件中设置合适的error_prepend_stringerror_append_string。在我的情况下,我使用<div class="serverfault"></div>

然后,根据此字符串搜索结果以获取正则表达式,如下所示:/<div class="serverfault">([\d\D]+?)</div>/g

您现在可以显示发生的错误。

我更进了一步,并添加了“忽略”和“中止”按钮(或者在致命错误的情况下,仅“中止”)。如果按下“忽略”按钮,正则表达式将再次作为replace运行以删除PHP错误消息,剩余的字符串将被视为AJAX响应。

答案 3 :(得分:0)

您可以通过更改php.ini文件来记录错误日志文件中的错误。

http://php.net/manual/en/errorfunc.configuration.php#ini.log-errors

答案 4 :(得分:0)

很难说明您提供的信息。

我通常做的是在处理之前验证输入。 如果有些错误,您可以返回带有客户错误消息的json编码答案,否则您将返回成功消息。

if(! validateMail($_POST['mail']){
    echo json_encode(array('state' => 'error', 'message' => 'Invalid mail'));
} else {
    echo json_encode(array('state' => 'ok'));
}

答案 5 :(得分:0)

如果您只是需要一种快速而又脏的方法来检查脚本的错误,请将if语句更改为:

if(html == 'done'){
alert("working");
}else{
alert(html);
alert("something is wrong");
}

虽然如果您希望向用户显示错误,那么您需要以html以外的格式显示alert

答案 6 :(得分:0)

我的库phery,错误和异常,并与常规响应分离,他们都有自己的回调。你可以查看http://phery-php-ajax.net/demo.php中的错误 您也可以使用error_reporting配置在代码中捕获仅AJAX错误,向下滚动到“为一些代码自定义错误报告”。同时单击“查看PHP代码”以查看它是如何完成的。

异常,就像PHP中的try / catch块一样,您将为客户端返回一个带有描述性异常的PheryResponse::factory()->exception()

通过这种方式,您可以将所有错误检查保留在SERVER中,并且客户端只需执行应该执行的操作,显示服务器状态。

$('a#click-me')
// Make the link ajaxified
.phery('make', 'remote-function')
// Bind the events to the element
.on({
  'phery:exception': function(event, message){ 
    alert(message);
  },
  'phery:json': function(event, data){
    // deal with your json data
  }
});

PHP方面将是

Phery::instance()->set(array(
  'remote-function' => function($data){
     $r = new PheryResponse;
     try {
       // fill your JSON data array
       $r->json($json); // deliver the JSON
     } catch (Exception $e) {
       $r->exception($e->getMessage()); // Exception, send the error to the client
     }
     return $r;
  }
))->process();