【问题标题】:How is data returned in a jquery post?jQuery 帖子中如何返回数据?
【发布时间】:2016-06-28 18:25:14
【问题描述】:

我试图弄清楚如何将错误从我的 php 脚本返回到我的 jquery 函数。我得到了来自this question 的最佳答案,我在其中回显了一个我在数据对象中返回的 json 对象,但我看不到 json 对象的各个部分。如何从帖子返回中访问数据 json 对象?我的控制台总是显示没有数据错误。

$.post("../dist/scripts/submitOrder.php",
    {
        clientID: clientID,
        date: date,
        po: po,
        orderType: orderType,
        orderlines:JSON.stringify(productArray)
    },
    function(data, status){
        console.log("Data: " + data + "\nStatus: " + status);
        if(data.error){
            console.log("BIG ERROR:" + data.error.message);
        } else {
            console.log("no data error");
        }
    })
        .fail(function() {
        console.log("Fail Data: " + data + "\nStatus: " + status);
    });

相关的.php脚本

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully ";
} else {
    $conn->close();
    //echo "Error: " . $sql . "<br>" . $conn->error;
    echo "error!!!";
    echo json_encode(array('error' => array(
    'message' =>  $sql,
    'code' => $conn->error,
    )));
    exit;

}

我的控制台显示了这个

Data: <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: clientID in C:\wamp\www\admin\startbootstrap-sb-admin-2-1.0.8\dist\scripts\submitOrder.php on line <i>11</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0015</td><td bgcolor='#eeeeec' align='right'>259296</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\admin\startbootstrap-sb-admin-2-1.0.8\dist\scripts\submitOrder.php' bgcolor='#eeeeec'>..\submitOrder.php<b>:</b>0</td></tr>
</table></font>
error!!!<br />
<font size='1'><table class='xdebug-error xe-warning' 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> Warning: main(): Couldn't fetch mysqli in C:\wamp\www\admin\startbootstrap-sb-admin-2-1.0.8\dist\scripts\submitOrder.php on line <i>32</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0015</td><td bgcolor='#eeeeec' align='right'>259296</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\admin\startbootstrap-sb-admin-2-1.0.8\dist\scripts\submitOrder.php' bgcolor='#eeeeec'>..\submitOrder.php<b>:</b>0</td></tr>
</table></font>
{"error":{"message":"INSERT INTO Orders (clientID, dateSubmitted , type)\r\nVALUES ('0', '', 'internal')","code":null}}
Status: success
VM256:279 no data error

【问题讨论】:

  • 似乎你打开了 xdebug ,这给你的输出增加了额外的麻烦(以及error!!!
  • 确保在您的生产代码中,不会有人通过错误查看您的 SQL 或表详细信息。
  • 修复 php 错误/警告后,您需要删除 echo "error!!!"; 并回显 json。如果你不这样做,它将是畸形的
  • 谢谢,我已经删除了 error!!! 和 @4castle,目前我正在尝试处理错误报告,我将删除表格详细信息并替换为更通用的错误当我弄清楚如何让data.error 显示时
  • 你只是得到一个{"error":{"message":"INSERT INTO Orders (clientID, dateSubmitted , type)\r\nVALUES ('0', '', 'internal')","code":null}}的字符串吗?如果是这样,你必须将字符串转换回var useData = JSON.parse(data);

标签: javascript php jquery


【解决方案1】:

您的 PHP 脚本输出 PHP 错误,导致 JSON 无效。

您可以禁止显示错误:

error_reporting(0);

或修复错误。

【讨论】:

  • 我已将error_reporting(0); 添加到我的php 代码中,并且我还删除了错误!!!回声。我仍然收到no data error 我还有什么遗漏吗?
  • 如果 SQL 成功,则响应不是 JSON。也许调查一下。
  • 啊,这是 JSON,需要解析 var response=jQuery.parseJSON(data); 才能解决问题并使其正常工作。谢谢你的建议。
猜你喜欢
  • 2017-03-18
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
相关资源
最近更新 更多