【问题标题】:Javascript not decoding JSONJavascript不解码JSON
【发布时间】:2014-02-28 18:29:28
【问题描述】:

使用 PHP 和 Javascript 使用 JSON 编码/解码数据的正确方法是什么

我的 PHP 很简单:

session_start();
header('Content-type: application/json');
echo json_encode($_SESSION['orl']);

文本中的简单名称值对,没有对象或任何东西。

我的 JavaScript 是

function checkForSeshStuff(){
    window.alert("check sesh called");
    GM_xmlhttpRequest({
        method: "GET",
        url: "http://internal.example.com/orl_get_sesh.php",
        onload: function(response) {
            window.alert(response.responseText);
            var obj = JSON.parse(response.responseText);
            window.alert(obj.count);
            if(obj.count > 1){
                document.getElementById('ajaxSeshStat').innerHTML = "<input type='button' onclick='loadLastSesh();' value='Populate "+obj.count+" Fields' />";
                document.getElementById('ajaxSeshStat').style.display = "block";
            }
        }
    });
}

我有一堆用于调试的警报,第三个警报每次都会提醒 JSON 计数警报“未定义”。

我是否在我的 PHP 中使用了正确的 mime 类型?我在我的 JS 中正确解析了吗?怎么了?

编辑 这是PHP生成的JSON数据字符串

{"BodyContent_ctl00_ctl00_chRead":"on","BodyContent_ctl00_ctl00_txtOfferCode":"xc","BodyContent_ctl00_ctl00_txtFirstName1":"cx","BodyContent_ctl00_ctl00_txtCity1":"Beverly Hills","BodyContent_ctl00_ctl00_txtZip1":"90210","BodyContent_ctl00_ctl00_txtMonthlyIncome1":"0","BodyContent_ctl00_ctl00_txtOtherIncome1":"0","BodyContent_ctl00_ctl00_chbCoBorrowerContactInformation":"on","BodyContent_ctl00_ctl00_txtMonthlyIncome2":"0","BodyContent_ctl00_ctl00_txtOtherIncome2":"0"}

【问题讨论】:

  • response.responseText 的警报显示什么?如果除了 json 之外还有其他内容,解析将失败。例如php 警告。
  • 您确定$_SESSION['orl'] 具有count 属性吗?
  • @ExplosionPills $_SESSION['orl'] 是一个数组,所以是的
  • 如果您使用console.log(response) 而不是警报,您可以在浏览器的控制台中看到整个响应,并且可能会更好地了解正在发生的事情。
  • @Adelphia PHP 数组不会自动拥有count 属性......也许你应该从它开始。另请注意,JSON 中缺少 count

标签: javascript php json decode encode


【解决方案1】:

您的会话在数组中有计数元素吗?看起来不像。

你试过了吗:

alert(obj.BodyContent_ctl00_ctl00_txtZip1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 2018-04-29
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多