2011-09-20 22 views
2

我有2个部分的问题。将JSON转换为数组并获取类型

  1. 如何让我的剧本,以提醒在javascript 而不是[object object]变量type
  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);呼叫

回答

1

如果你想要得到的结果是一个数组在PHP方面,它可能应该是javascript方面的一个数组:

[value1] 

代替

{key1 = value1} 

什么是你的代码中发生的你,而不是创建一个对象。该对象可能是你真正想要的,但它似乎不需要迭代PHP端的值,这将是实际数组与对象相对的唯一原因。

如果你离开代码规范,请访问值在PHP端像这样:

echo $result->brand; 
+0

谢谢,JSON是太麻烦的处理。这让我意识到我可以在没有转换的情况下做到这一点。我只是在没有键的情况下将我的对象重新命名为[],PHP将它们作为数组读取。都好。 – Chamilyan

+0

@Chamilyan这样做,如果你喜欢。无法想象为什么你会喜欢那个对象。用一个数组处理匿名数据......用一个对象,你可以通过名字引用特定的数据。 – dqhendricks

+0

好吧,你赢了,再次使它成为一个对象:)。更干净。 – Chamilyan