Intereting Posts
Почему скрипт php замедляется? Как построить график реального времени (гистограмма) с использованием данных, полученных в текстовом файле Как сортировать строки по ON, OFF, SOLD Контрольные контроллеры в Symfony2 с доктриной Как написать простой объект в PHP php single curl работает, но многократный завиток не работает? получить текущий идентификатор страницы внутри страницы плагина wordpress Регулярное выражение для соответствия запятой не между символами группировки Безопасный вход в PHP mod_rewrite – я не могу заставить его работать, как я хочу Как бы вы преобразовали ранее существующее веб-приложение в многоязычный? Включая разрывы строк и маркеры в функции графического сообщения Facebook PHP и MySQL – как избежать пароля в исходном коде? Насколько надежным является HTTP_HOST? В чем смысл обратной записи (значение null === $) при проверке значения переменной?

Не получить ответ на вызов AJAX для PHP (с данными JSON)

У меня PHP работает на сервере, и я вызываю его через jQuery.Ajax() но он всегда возвращается к части ошибки.

Если я вызываю адрес PHP непосредственно из своего браузера, я получаю ответ, который мне нужен, он только разбивается на вызов jQuery.

PHP (просто говоря):

 <?php if(isset($_GET['getcodenode'])) { echo json_encode ( array ( 'itens'=> array ( 0=>array('id'=>100,'lb'=>'300','ds'=>'300 mm'), 1=>array('id'=>105,'lb'=>'400','ds'=>'400 mm') ) ) ); die(); } ?> 

И на стороне javascript я вызываю его так:

 <html> <head> <script type="text/javascript"> function loadcall(data) { jQuery.ajax({ async:false, method:'POST', crossDomain:true, dataType:'jsonp', url:'http://example.com/ajax.php?getcodenode', data:{'arg':data}, success:function(result){ var ret=JSON.parse(result); var el=jQuery('#abc'); for(en in ret.itens) { el.Append('<div id="item_'+en.id+'">'+en.lb+', '+en.ds+'</div>'); } }, error:function(result){alert('Error (loadcall)');} }); } </script> </head> <body> <div id="abc"></div> </body> </html> 

Как читать объекты JSON из PHP и отображать их в браузере?

В вашем коде есть много комментариев :

  • Хотя вы уже получаете json-возврат с сервера; вы не разбираете это. Это уже json-объект.
  • Вы можете установить async: true, чтобы получить данные обещания
  • То, как вы проходите через объекты, вам нужно сделать это правильно. см. изображение, как правильно получить путь к объекту.
  • Вы можете использовать $ token вместо токена jQuery; если вам это не понадобится.
  • Я не уверен, что это лучший подход; но он дает необходимый результат, как объяснялось в вашем вопросе.

Код тестирован с некоторыми комментариями:

 <script type="text/javascript"> loadcall("test"); // as pointed you need to call the function so it runs function loadcall(data) { $.ajax({ async: true, method: 'POST', crossDomain: true, dataType: 'json', //your data type should be JSON not JSONP url: 'page.php?getcodenode', data: { 'arg': data }, success: function(result) { console.log(result); // see attached image how to get the path for object var ret = result; var el = $('#abc'); for (en in ret.itens) { console.log(ret.itens[en].ds); el.append('<div id="item_' + ret.itens[en].id + '">' + ret.itens[en].lb + ', ' + ret.itens[en].ds + '</div>'); } }, error: function(result) { console.log(result); } }); } </script> 

Как получить путь объекта от результата консоли?

  1. Откройте инструмент разработчика в своем браузере, нажмите F12 (в Chrome, Firefox или Edge):
  2. Перейдите на вкладку «Консоль» и найдите результаты.
  3. Разверните результаты, чтобы узнать, как добраться до объекта, который вам нужен.
  4. Щелкните правой кнопкой мыши и «скопируйте путь собственности» .
  5. Используйте object path мере необходимости в коде.

вам нужно вызвать loadcall (data)

 <html> <head> <script type="text/javascript"> function loadcall(data) { jQuery.ajax({ async:false, method:'POST', crossDomain:true, dataType:'jsonp', url:'http://example.com/ajax.php?getcodenode', data:{'arg':data}, success:function(result){ var ret=JSON.parse(result); var el=jQuery('#abc'); for(en in ret.itens) { el.Append('<div id="item_'+en.id+'">'+en.lb+', '+en.ds+'</div>'); } }, error:function(result){alert('Error (loadcall)');} }); } loadcall('somethingData') </script> </head> <body> <div id="abc"></div> </body> </html>