Преобразование JSON в массив и получение типа - PullRequest
2 голосов
/ 20 сентября 2011

У меня есть 2 вопроса.

  1. Как мне заставить мой скрипт предупреждать переменную type в javascript вместо [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); вызова

1 Ответ

1 голос
/ 20 сентября 2011

Если вы хотите, чтобы результат был массивом на стороне PHP, вероятно, это должен быть массив на стороне JavaScript:

[value1]

вместо

{key1 = value1}

В вашем коде происходит то, что вы вместо этого создаете объект. объект, вероятно, действительно то, что вы на самом деле хотите, поскольку, похоже, вам не нужно перебирать значения на стороне PHP, что будет единственной причиной для фактического массива, а не для объекта.

если вы оставите код как есть, вы получите доступ к значениям на стороне PHP следующим образом:

echo $result->brand;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...