JQuery Ajax не работает при использовании json_encode [duplicate]

Функция scanf() автоматически удаляет пробелы, прежде чем пытаться проанализировать преобразования, отличные от символов. Исключение составляют форматы символов (в основном %c, а также наборы сканирования %[…] - и %n); они не удаляют пробелы.

Используйте " %c" с ведущим пробелом, чтобы пропустить дополнительное пустое пространство. Не используйте конечную заготовку в строке формата scanf().

Обратите внимание, что это все еще не потребляет никаких конечных пробелов, оставшихся во входном потоке, даже до конца строки, поэтому остерегайтесь что если также использовать getchar() или fgets() в том же входном потоке. Мы просто получаем scanf, чтобы пропускать пробелы до , например, для %d и других несимвольных преобразований.


Обратите внимание, что не-пробелы " директивы "(использовать терминологию POSIX scanf ), отличную от преобразований, например, буквальный текст в scanf("order = %d", &order); также не пропускает пробелы. Литерал order должен соответствовать следующему символу, который нужно прочитать.

Итак, вы, вероятно, захотите " order = %d" там, если хотите пропустить новую строку из предыдущей строки, но по-прежнему требуется литеральное совпадение на фиксированном string, как этот вопрос .

48
задан Michael Berkowski 30 July 2012 в 13:56
поделиться

5 ответов

Если ключи массива в вашем массиве PHP не являются последовательными числами, json_encode() должны сделать другой объект конструкцией, так как массивы JavaScript всегда последовательно индексируются по цифре. Используйте array_values() внешнюю структуру PHP, чтобы отменить исходные ключи массива и заменить их нулевой последовательной нумерацией:

Пример:

// Non-consecutive number keys are OK for PHP
// but not for a JavaScript array
$array = array(
  2 => array("Afghanistan",32,13),
  4 => array("Albania",32,12)
);

// array_values() removes the original keys and replaces
// with plain consecutive numbers
$out = array_values($array);
json_encode($out);
// [["Afghanistan",32,13],["Albania",32,12]]
120
ответ дан Michael Berkowski 26 August 2018 в 02:01
поделиться
Функция

json_encode () поможет вам закодировать массив на JSON в php.

, если вы будете использовать только функцию json_encode напрямую без какой-либо конкретной опции, она вернет массив. Как упоминается выше вопрос

$array = array(
  2 => array("Afghanistan",32,13),
  4 => array("Albania",32,12)
);
$out = array_values($array);
json_encode($out);
// [["Afghanistan",32,13],["Albania",32,12]]

Поскольку вы пытаетесь преобразовать Array в JSON, тогда я бы предложил использовать JSON_FORCE_OBJECT в качестве дополнительной опции (параметров) в json_encode, как ниже

<?php
$array=['apple','orange','banana','strawberry'];
echo json_encode($array, JSON_FORCE_OBJECT);
// {"0":"apple","1":"orange","2":"banana","3":"strawberry"} 
?>
2
ответ дан Dinesh Gopal Chand 26 August 2018 в 02:01
поделиться

Я хочу добавить к ответу Майкла Берковски, что это также может произойти, если порядок массива будет отменен, и в этом случае немного сложнее наблюдать эту проблему, потому что в объекте json порядок будет упорядочен по возрастанию.

Например:

[
    3 => 'a',
    2 => 'b',
    1 => 'c',
    0 => 'd'
]

Вернет:

{
    0: 'd',
    1: 'c',
    2: 'b',
    3: 'a'
}

Таким образом, решение в этом случае должно использовать array_reverse перед его кодировкой json

4
ответ дан Hassaan 26 August 2018 в 02:01
поделиться

Общее использование JSON - это чтение данных с веб-сервера и отображение данных на веб-странице.

В этой главе рассказывается, как обмениваться данными JSON между клиентом и сервером PHP .

PHP имеет некоторые встроенные функции для обработки JSON.

Объекты в PHP могут быть преобразованы в JSON с помощью функции PHP json_encode ():

<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";

$myJSON = json_encode($myObj);

echo $myJSON;
?>

0
ответ дан L VEERAPANDI BCA 26 August 2018 в 02:01
поделиться

Если вы не укажете индексы в своем начальном массиве, вы получите регулярные числовые. Массивы должны иметь какой-то уникальный индекс

0
ответ дан Ray 26 August 2018 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: