Intereting Posts
Удалить дубликат в массиве на основе значения столбца как перечислить переменную массива, созданную с помощью рекурсивной функции в Smarty перенос слов не позволяет переносить номера также PHP: анализ разделенных запятыми значений между квадратными скобками в многомерном массиве Вызов веб-службы ASMX с PHP, когда операторы принимают интерфейс Дисплей X divs случайным образом из возможного Y Как ограничить страницы, показанные в сценарии разбивки на страницы Получение идентификатора текущего контроллера в Yii PHP: Как передать несколько переменных в массив? PHP: Самый быстрый метод для анализа параметров url в переменных? Эмулятор PHP-терминала Как объявить глобальную переменную в CodeIgniter 2.2? Является ли Markdown (с strip_tags) достаточным для остановки атак XSS? SPL против массива: когда следует использовать SPL и когда мы должны использовать Array в PHP? как php не записывает содержимое изображения на диск?

JQuery, чтение переменных JSON, полученных из PHP

Извините, если это базовое, но я занимаюсь выяснением этого в течение всего дня и добрался до того места, где я могу делать все, что мне нужно, с JQuery и cakephp (не уверен, имеет ли значение cakephp в этом или, если он такой же, как любой PHP), я хотите вернуть переменную из функции cakephp в jquery, я прочитал о том, как это сделать, например здесь:

торт:

$test[ 'mytest'] = $test; echo json_encode($test); 

и jquery:

 $.ajax({ type: 'POST', url: 'http://localhost/site1/utilities/ajax_component_call_handler', data: { component_function: component_function, param_array: param_array }, dataType: "json", success: function(data) { // how do i get back the JSON variables? } }); 

Я просто не могу понять, как вернуть одну или несколько переменных в полезную форму в jquery, я просто хочу переменную, чтобы я мог делать что-то еще с ней, я искал то, что я могу найти, но не что делает его полностью ясным для меня .. спасибо за любой совет.

Ваши переменные находятся в данных.

 $.ajax({ type: 'POST', url: 'http://localhost/site1/utilities/ajax_component_call_handler', data: { component_function: component_function, param_array: param_array }, dataType: "json", success: function(data) { // how do i get back the JSON variables? var values = eval( data ); //if you 100 % trust to your sources. } }); 

Переменные JSON находятся в переменной data . В вашем случае это будет выглядеть так:

 var data = { myTest: "Whatever you wrote here" }; 

… так что вы можете прочитать его из data.myTest .

(Не уверен, что это актуально, но вы можете удалить http://localhost/ part из URL-адреса, AJAX не разрешает междоменные запросы в любом случае.)

В основном переменная данных содержит строку json. Чтобы разобрать его и снова преобразовать в JSON, вам необходимо выполнить следующие действия:

 $.ajax({ type: 'POST', url: 'http://localhost/site1/utilities/ajax_component_call_handler', data: { component_function: component_function, param_array: param_array }, dataType: "json", success: function(data) { json = $.parseJSON(data); alert(json.mytest); } 

Я не тестировал его, но он должен работать таким образом.

Обратите внимание, что когда вы указываете dataType «json» или используете $. getJSON (вместо $. ajax ) jQuery будет применять $. parseJSON автоматически.

Таким образом, в обратном вызове «success» вам не нужно снова анализировать ответ с помощью parseJSON:

 success: function(data) { alert(data.mytest); } 

В случае возвращения переменной JSON для просмотра файлов вы можете использовать javascript-помощник:

в вашем контроллере утилит:

 function ajax_component_call_handler() { $this->layout = 'ajax'; if( $this->RequestHandler->isAjax()) { $foobar = array('Foo' => array('Bar')); $this->set('data', $foobar); } } 

и в вашем представлении / утилитах / ajax_component_call_handler.ctp вы можете использовать:

 if( isset($data) ) { $javascript->object($data); //converts PHP var to JSON } 

Итак, когда вы достигаете стадии своей функции:

  success: function(data) { console.log(data); //it will be a JSON object. } 

В этом случае вы будете обрабатывать тип переменной, отделенный от контроллеров и логики просмотра (что, если вам понадобится что-то другое, чем JSON) …