0

我有一个要提交给远程 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 脚本错误。有没有办法可以显示这个错误?

4

7 回答 7

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";
    }
于 2012-12-22T01:35:31.340 回答
0

您可以更好地打印html. 如果显示错误设置为打开,并且脚本中有错误,它们将作为响应出现。

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

error_reporting(E_ALL);
ini_set('display_errors', '1');
于 2012-12-22T01:24:29.217 回答
0

在您的 php.ini 文件中设置合适的error_prepend_string和。error_append_string就我而言,我使用<div class="serverfault">and </div>

然后,在结果中搜索基于此字符串的正则表达式,如下所示:/<div class="serverfault">([\d\D]+?)</div>/g

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

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

于 2012-12-22T01:26:10.687 回答
0

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

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

于 2012-12-22T01:27:19.337 回答
0

很难用你提供的信息来判断。

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

if(! validateMail($_POST['mail']){
    echo json_encode(array('state' => 'error', 'message' => 'Invalid mail'));
} else {
    echo json_encode(array('state' => 'ok'));
}
于 2012-12-22T01:29:47.680 回答
0

如果您只需要一种快速而肮脏的方法来检查脚本有什么问题,请将您的 if 语句更改为:

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

尽管如果您希望实际向用户显示错误,那么您将希望htmlalert.

于 2012-12-22T01:44:44.507 回答
0

使用我的库 phery,错误和异常并与常规响应分离,它们都有自己的回调。您可以检查http://phery-php-ajax.net/demo.php中的错误 您还可以使用配置在代码中捕获仅 AJAX 错误error_reporting,向下滚动到“自定义错误报告以获取一些代码”。还可以单击“查看 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();
于 2012-12-26T04:30:24.790 回答