2016-11-10 2 views
0

У меня есть массив, как это в моем PHP страницу с именем new1.php:Как вернуть массив и данные HTML в ответ AJAX?

$arr = ['value 1', 'value 2', 'value 3']; 
$html = '<div>huge data with all tags like a page</div>'; 
$response = json_encode('array' => $arr, 'html' => $html); 
echo $response 

На странице вызова, когда я console.log(data.html) это дает undefined. То же самое происходит и с console.log(data.array);. Вот мой AJAX код:

$.ajax({ 
    url: "new1.php", 
    type: "POST", 
    data: { somedata: somedata }, 
    dataType: "text", 
    success: function(data) { 
     console.log(data); 
     console.log(data.html); 
     console.log(data.array); 
    } 
}); 

Самое главное, что я хочу знать, что это лучший способ, чтобы вернуть страницу с другими данными из ответа AJAX?

+6

'DATATYPE:«Текст»,' изменение 'DATATYPE:«JSON»,' – guradio

+0

@JonStirling, нет синтаксиса error – EaB

+0

@guradio, если я сделаю так, я смогу получить html-страницу или html-контент – EaB

ответ

1

из кода PHP, где вы json_encode добавить это в верхней части страницы header("Content-Type: application/json"); тогда ваш закодировать должен принимать массив в качестве параметра вместо

json_encode(array("array"=>$arr, "html"=>$html));

он должен увидеть вашу запись как json сейчас и, пожалуйста, измените ur dataType на json из соображений интеллекта JQuery из состояния сервера (jquery) он автоматически примет е вместо JSON

DATATYPE (по умолчанию: Intelligent Guess (XML, JSON, скрипт или HTML)) Тип: String тип данных, которые вы ожидаете от сервера. Если ни один не указан, jQuery попытается вывести его на основе типа ответа MIME (тип XML MIME даст XML, в 1.4 JSON будет создан объект JavaScript, в 1.4 скрипт выполнит скрипт, и все остальное будет возвращается как строка). Доступные типы (и результат передается в качестве первого аргумента для вашего успеха обратного вызова) являются:

+0

если я это сделаю, смогу ли я получить html-страницу или html-контент? – EaB

+0

да, с данными. * Формат любого контента, или теперь 'console.log ('мои данные', данные), он будет зарегистрирован как объект json, где вы можете увидеть детей и их содержимое –

+0

ok я попробую это – EaB

2

Вы должны быть json parse, потому что вы json-кодировка из php-файла, а так как есть тип данных вашего ajax, это текст, поэтому вам нужно разобрать json.

$.ajax({ 
     url:"new1.php", 
     type:"POST", 
     data:{somedata:somedata}, 
     dataType:"text", 
     success: function(data){ 
       data = JSON.parse(data); 
        console.log(data); 
       console.log(data.html); 
       console.log(data.array); 

      } 
    }); 
+2

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснений! –

+0

Thanks Rory будет помнить об этом – Jigar7521

+0

задает такую ​​ошибку, как Ошибка анализа: синтаксическая ошибка, неожиданный '= >' (T_DOUBLE_ARROW) в – EaB

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