【问题标题】:JSON gives weird formatted result in js, how can I access the data?JSON在js中给出了奇怪的格式结果,我怎样才能访问数据?
【发布时间】:2020-01-11 23:33:23
【问题描述】:

这是完全不变的 JavaScript 输出:

{"message":"Beer 0,33l"}
{"message":"Beer 0,5l"}
{"message":"No matching articles"}

这来自一个来自 php 的数组,其中 > json_encode() 编码。 这是 JS 中的输出:

$.ajax({
    url: '/Workers/backEnd/searchProduct.php',
    data: $('#warenInput'),
    type: 'post',
    success: function(data) {

        console.log(data);
    }
});

现在,我不知道如何获取字符串。我尝试了所有想到的东西。两者都不 data[0] 也不是 data['message'] 有效。

如何输出存储在“消息”中的字符串?

【问题讨论】:

  • 修复您的 searchProduct 页面,以便它为您提供正确的 JSON 作为回报。有一些变通方法,例如使用正则表达式,但它们远不如修复数据基本损坏格式的来源

标签: javascript php jquery


【解决方案1】:

您需要解析 JSON 响应。

更新:您在POST 请求中通过data 发送什么数据?在我看来,您好像在发送 HTML 元素,而不是实际数据。这可能应该是$('#warenInput').val(),但您的问题格式不正确。

试试:

    $.ajax({
        url: '/Workers/backEnd/searchProduct.php',
        data: $('#warenInput'),
        type: 'post',
        success: function(data) {
            var res = JSON.parse(data);
            // or...
            var res = $.parseJSON(data);
            // If the response is an array...
            console.log(res[0].message);
            // If the response is an object...
            // console.log(res.message);
        }
    });

在 MDN 上了解 JSON.parse()

您需要将数据转换为 PHP 中的数组,就像这样,JSON.parse() 才能工作。

$json = json_encode(array($data));

您也可以将 data 响应括在括号中,例如

var res = JSON.parse('[' + data + ']');

但是,我强烈建议您在后端正确格式化它。在没有更详细地查看您的 PHP 脚本的情况下,我不得不假设它的格式不正确。也许更新您的问题以显示您如何格式化您的回复?

【讨论】:

  • 没有给出解析错误:JSON.parse: unexpected non-whitespace character after JSON data 我怎样才能避免这种情况?
  • @MyNameisKev 这意味着您返回的数据不是有效的 JSON 数据。您可能需要在 PHP 中将数据转换为 JSON 数组。请参阅我的更新答案。
  • echo json_encode(['message' => $productCheck['product']]); 这就是我在 php 中编码数据的方式。 $productCheck['product'] 是一个包含 3 个数据字符串的数组。而且无论我做什么,总会有一个错误。
  • 另外值得一提的是,您可以使用$.parseJSON(data);,就像您使用 jQuery 一样。
【解决方案2】:

如果您成功获取 json 格式的值。那么——

$.ajax({
    url: '/Workers/backEnd/searchProduct.php',
    data: $('#warenInput'),
    type: 'post',
    success: function(data) {

        console.log(data.message);
    }
});

【讨论】:

  • 他不是。他已经说这行不通。 PHP json_encode 将返回一个序列化的字符串。如果不解析响应,您将无法直接访问数据。
猜你喜欢
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多