php - json_encode 返回 200 且未定义

标签 php jquery json ajax wordpress

我想要一个代码来添加或删除数据库书签。 代码已准备就绪,它可以正确添加和删除数据库书签,但是当我调用该函数时,它不断返回 json error相反 json success即使代码有效。

我想知道代码(我从其他地方获得并改编的)有什么问题,因为客户端没有收到正确的值 truefalse ,它只会触发json beforeSendingjson error .

服务器端:

if($isFavorite) {
    // if it's favorite, remove from bookmarks
    return json_encode(array("status" => true, "added" => false));
} else {
    // if it's not favorite, include into bookmarks
    return json_encode(array("status" => false, "added" => true));
}

客户端:

<script>
    function addItemToUsersList(userId, type, itemId) {
        jQuery.ajax({
            'url': 'xxx', 
            'type': 'GET',
            'dataType': 'json', 
            'data': {userid: userId, type: type, itemid: itemId}, 
            'success': function(data)  {
                console.log('json success');
            },
            'beforeSend': function() {
                console.log('json beforeSending');
            },
            'error': function(data) {
                console.log('json error');
                console.log(data.status + ' ' + data.added);
            }
        });
    }
</script>

console.log(data.status + ' ' + data.added);线路日志 200 undefined

如何返回正确的值 truefalse对于两者"status""added"

<小时/>

编辑: json success从未登录过控制台,所以我不知道服务器端发生了什么。我需要知道这一点,因为我需要更改元素的类以显示空星或黄色星。

最佳答案

如果您返回结果并且在其他地方没有对该返回执行任何操作,则您将不会收到对 ajax 调用的任何响应,因此它是未定义。正如 @MikeC 所说,您必须在某个时刻回显它。

如果您还没有在其他地方回应它,请尝试:

$response = array(
    'status' => $isFavourite,
    'added' => !$isFavourite
);
echo json_encode($response);

我的建议是,如果“状态”和“添加”每次都确实相反,那么您可能只需要单独发送“状态”。在你的 JS 中,如果你想知道 added 的值是什么,你可以像我上面所做的那样检查“status”并反转 bool 值。

 var added = !data.status;
<小时/>

更新

如果您的 ajax 请求返回到 error 函数,则请求本身可能失败。

将错误函数更改为此,以调试发生的情况:

'error': function(jqXHR, status, error) {
    console.log(status);
    console.log(error);
}

您可能在服务器端代码中的某处出现错误,或者您可能调用了错误的 PHP 脚本?

关于php - json_encode 返回 200 且未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37328769/

相关文章:

javascript - 使用 yii2 框架-vis.js 库的时序图

javascript - onmouseout 事件和实时搜索 ajax

从 $.get 中调用时,jQuery 插件变得未定义

jquery - Cufon + jQuery 悬停不工作

javascript - 如何使用 Javascript 和 HTML 将链接嵌入到表中的值中

javascript - D3.js - 使用 json 中的嵌套数组绘制图像

java - 无法从 START_ARRAY token 中读取文档 : Can not deserialize instance of java. lang.String

php - 无法使用亚马逊 MWS 报告 API 获取金融交易报告

php - 页面上的 Woocommerce 客户列表

javascript - jQuery Mobile Ajax 导航功能和 CSS 样式