0

我有一个使用 AJAX 设置的前端编辑器来编辑 Wordpress 中的帖子。一切顺利,我的表单提交到一个 php 文件,该文件成功更新数据库,然后使用以下函数创建响应:

  function generate_response($action, $message = '', $details = '' ){
    $response = array(
        "action"  => $action,
        "message" => $message,
        "details" => $details
        );

    echo json_encode($response, JSON_FORCE_OBJECT);
}

但是,响应似乎没有正确编码,当我jsonResponse在 JS 中记录我的返回时,我得到了这个:

Object {action: "updated", message: "Succes (no changes detected).", details: ""}

我很确定这是 malforemd JSON,因为action,messagedetails不是双引号,对吧?

我尝试解析响应,我得到的只是null

  response = jQuery.parseJSON(jsonResponse);
  console.log(response); //returns null

我在这里做错了什么?我是否正确并且响应没有正确格式化,如果是,我将如何解决它?

4

2 回答 2

1

当您从 ajax 记录结果时,您会得到:

Object {action: "updated", message: "Succes (no changes detected).", details: ""}

这已经是一个对象,而不是 JSON 字符串,这意味着您可能dataType: 'JSON'在 ajax 调用中设置,并且 JSON 由 jQuery 自动解析,再次解析它只会导致错误。

您需要做的就是使用响应,无需解析:

var action = response.action;
于 2013-03-28T23:40:43.897 回答
0

@adeneo因此,当我运行查询以加载前5个帖子然后得到什么结果时,它们将被编码为json。我得到的输出将是一个对象而不是JSON字符串,对吗?

昨天花了几个小时进行 stringify - 只是为了将其转换为 json 假设 myoutput 是一个 json 字符串。

于 2013-03-29T05:55:10.710 回答