我正在尝试找到一个在我的项目中发生错误的地方,以便能够从那里抛出错误消息。
在我调试的项目中,执行ajax post调用。在PHP早期的某处,导致错误的代码正在执行。就我而言,parse error
导致问题。尝试从布尔变量中提取数组值。但在那个地方,没有任何问题,代码继续运行。
PHP代码失败:
if ($booleanValue['not-existing-arrayvalue'] == 'true') { }
在某些时候被调用的ajax代码:
var call = $.ajax(options);
call.done(function (result) { ... })
.fail(function(xhr, text_status){ ... }
在fail方法中,错误变得清晰,但它存储在一个巨大的html响应中,因此很难从整个值中获取。它存储在xhr.responseText:
<br />↵<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>↵<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: selected in "C:\workspace\project\class.php" on line <i>14</i></th></tr>↵<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th>
这只是值的一部分,包含导致错误的行号。
有没有人知道这个ajax失败的响应文本来自哪里?是否有可能获得更清晰的消息而不是一个大的html输出字符串?
答案 0 :(得分:1)
class.php文件的第14行有一个错误,看起来你试图对数组进行越界调用。因此php返回错误响应。 Jquery检测到运行失败函数的错误响应。
如果您使用像fiddler这样的工具查看http请求,那么您可以看到返回了http错误代码而不是正常的200.(可能是500 - 内部服务器错误)。
如果您没有收到明确的php错误消息,那么您应该检查日志文件和/或服务器配置。
答案 1 :(得分:0)
你的问题不是在Ajax中,而是在代码本身中返回答案。从ajax的一侧,你只需要解析一个大字符串的值。