【问题标题】:Converting JSON to Array and getting the type将 JSON 转换为数组并获取类型
【发布时间】:2011-11-21 07:43:34
【问题描述】:

我有一个两部分的问题。

  1. 如何让我的脚本在 javascript 中提醒变量 type 而不是[object object]?
  2. 如何让我的 Json 成功转换为数组而不返回 NULL?

Javascript:

$(document).ready(function() {

// Arrays
var title = $('.table-item-1 > strong').map(function () {
    var value = $(this).text();
        return value;
    }).get();

var name = $('[width|="23%"]').next('.table-item-1').map(function () {
    var value = $(this).text();
        return value;
    }).get();

var phone = $('[width|="23%"]').next('.table-item-1').next('.table-item-1').map(function () {
    var value = $(this).text();
        return value;
    }).get();

var fax = $('[width|="23%"]').next('.table-item-1').next('.table-item-1').next('.table-item-1').map(function () {
    var value = $(this).text();
        return value;
    }).get();

var email = $('[width|="23%"]').next('.table-item-1').next('.table-item-1').next('.table-item-1').next('.table-item-1 , a').map(function () {
    var value = $(this).text();
        return value;
    }).get();

// Individual    
var brand = $('.panel-1 tr strong').html();
var corp = $('.panel-1 tr td :gt(0)').html();
var web = $('.panel-1 tr td ~ .focus :not(strong)').html();
var lna_code = $('.panel-1 tr td :last').html();
var lna_class = $('.panel-1 tr td :gt(4)').html();


var items = {
    'brand': brand,
    'corp': corp,
    'web': web,
    'lna_code': lna_code,
    'lna_class': lna_class,
    'title': title,
    'names': 
        name,
    'phones': 
        phone,
    'faxes': 
        fax,
    'emails': 
        email,
};

var data = $.toJSON(items);

$.ajax({
    type: 'POST',
    url: 'http://xxxxxx.com/xxxxx/PHP/excel.php',
    data: {'data':data},
    success: function(data) {
        alert('success');
    },
    complete: function(data){
        alert(data); // alerts [object object] , want a string
   }
});

});

PHP:

<?php
$json = $_POST['data'];
$result = json_decode($json);
$resultsType = gettype($result);
echo $resultsType;
?>

注意:我使用 json.js 进行 $.toJSON(items); 调用

【问题讨论】:

    标签: php jquery ajax post


    【解决方案1】:

    如果你希望结果是 PHP 端的数组,它可能应该是 javascript 端的数组:

    [value1]
    

    而不是

    {key1 = value1}
    

    您的代码中发生的是您正在创建一个对象。该对象可能是您真正想要的,但是您似乎不必遍历 PHP 端的值,这将是实际数组而不是对象的唯一原因。

    如果您保留代码原样,您可以像这样访问 PHP 端的值:

    echo $result->brand;
    

    【讨论】:

    • 谢谢,JSON 太麻烦了。这让我意识到我可以在没有转换的情况下做到这一点。我只是在没有键的情况下将我的对象重命名为 JS 中的 [],而 PHP 正在将它们作为数组读取。一切都好。
    • @Chamilyan 如果您愿意,可以这样做。无法想象为什么你更喜欢它而不是一个对象。使用数组处理匿名数据...使用对象,您可以按名称引用特定数据。
    猜你喜欢
    • 2021-08-29
    • 2019-03-23
    • 2016-12-24
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2017-09-11
    • 1970-01-01
    相关资源
    最近更新 更多