2017-02-11 2 views
-1

У меня есть следующая ситуация.Ajax вызов передать массив Javascript

В одном из JavaScript (функция answer_submit) я называю файл PHP через AJAX, как так:

$.post("/content/insert_reply.php", { 
    id: topicId, 
    answerText: answerText, 
    linkToShow: linkToShow 
}, function(data) { 
    call_next_function(data); 
}); 

В вызываемой PHP файл я генерировать массив, который будет напечатан в конце:

$previewArrayString = "{url: '".$urlPreview["URL"]. 
"', pictureUrl: '".$urlPreview["Picture"]. 
"', title: '".$urlPreview["Title"]. 
"', description: '".substr($urlPreview["Description"], 0, 160). 
"'}"; 
echo previewArrayString; 

Таким образом, функция «call_next_function» является expexting для ввода массива. Всякий раз, когда я вызываю эту функцию, она говорит мне, что вход не определен. Я попытался поместить все элементы, которые мне нужны, в глобальный массив в javascript. Но когда я делаю это в вызванном php-файле, сайт сообщает мне, что массив не определен.

Итак, чтобы сделать длинный рассказ короче, есть ли способ создать массив javascript в php, а затем получить данные через часть данных в функции js?

+0

Что вы передали в 'insert_reply.php', это данные json. посмотрите на json_encode php и json_decode – masadwin

+0

Ваш php-скрипт не создает массив, а json-объект. – Blauharley

+0

Вначале входной вызов call_next_function() будет String, а не массив/объект. Вам нужно сначала преобразовать его в JSON. –

ответ

0

В дополнение к предложению чужому использовать json_encode, установить Content-Type заголовка на стороне PHP:

header('Content-Type: application/json'); 
echo json_encode($urlPreview); 

Вы можете также добавить аргумент в $ .post, чтобы заставить ожидаемый тип ответа, но это не обязательно, если вы установите Content-Type. В любом случае, так вы бы это сделали:

$.post("/content/insert_reply.php", { 
    id: topicId, 
    answerText: answerText, 
    linkToShow: linkToShow 
}, function(data) { 
    call_next_function(data); 
}, "json"); 
+0

Спасибо за этот ответ. Он по-прежнему показывает, что все содержимое массива, которое я пытаюсь использовать, не определено. – Dennis

+0

попробуйте изучить возвращаемые данные в консоли браузера javascript; возможно, ваш php-код повторяет не только json_encode. – sonofagun

Смежные вопросы