2015-04-13 5 views
0

Работа с запросом jquery в JSON, но у меня есть некоторые проблемы с доступом к моим данным.Невозможно получить доступ к моим json-данным в javascript

Мой запрос:

$(document).ready(function() { 
    $("#client").change(function() {       
     $.ajax({ 
      type: "GET", 
      url: "jsonContacts.php", 
      data: "q="+$("#client").val(), 
      success: function(data){ 
       document.form.contactClient.options.length=0; 
       for(var i=0; i<data.length; i++) { 
        document.form.contactClient.options[i]=new Option(data[i].prenom, data[i].id, false, false); 
       }  
       document.form.contactClient.options[i]=new Option("End", i, false, false); 

      } 
     }); 
    }); 
}); 

Когда я поставил

 alert(data[1].prenom); 

Это дает мне неопределенными:/

Вот пример моего JSON:

[{"id":"1","prenom":"Maxime","nom":"Xnate"},{"id":"3","prenom":"Test_prenom","nom":"Test_nom"}] 

Мои запрос отображает два пустых варианта s и один вариант «Конец», поэтому он отлично подходит для массива, но не может получить никаких данных.

Итак, вы имеете представление о доступе к данным?

Благодаря

EDIT:

Моя JSON кодирования

$json = array(); 

while($contact = $requeteContact->fetch()) { 
    array_push($json, array("id" => $contact['idContact'], 
          "prenom" => $contact['CTC_Prenom'], 
          "nom" => $contact['CTC_Nom'])); 
} 

echo json_encode($json); 

работы:

$(document).ready(function() { 
    $("#client").blur(function() {       
     $.ajax({ 
      type: "GET", 
      url: "jsonContacts.php", 
      data: "q="+$("#client").val(), 
      success: function(data){ 
       document.form.contactClient.options.length=0; 
       for(var i=0; i<data.length; i++) { 
        document.form.contactClient.options[i]=new Option(data[i].prenom + " " + data[i].nom, data[i].id, false, false); 
       }  
       document.form.contactClient.options[i]=new Option("End", i, false, false); 

      } 
     }); 
    }); 
}); 
+0

Вы уверены, что данные вернутся в указанном выше формате? – Kushal

+0

Используйте 'dataType:" json "или" jsonp "для запросов с кросс-началом для получения истинного ответа JSON. –

+0

ну, вот что он дает мне, когда я перехожу вручную в jsonContacts.php? Q = Actemium по крайней мере – xNeyte

ответ

0

Ваши данные, вероятно, просто возвращается в виде строки. Вы можете решить эту проблему несколькими способами:

1) использование getJSON.

$.getJSON('http://..',{q:$("#client").val()},function(result){ 
}) 

2) Обработать строку, как JSON

JSON.parse(data); 

3) Установите Datatype на '' JSON. Если вы это сделаете, вам придется настроить тип содержимого на стороне сервера на «application/json». В PHP это будет выглядеть так:

header('Content-Type: application/json'); 
+0

В getJSON, когда я печатаю предупреждение (данные) ;, он просто отображает мне пустое окно. уже пробовал разбор, не работал. Пробовал также с заголовком, не работал ни:/ – xNeyte

+0

Это потому, что getJSON возвращает объект. Попробуйте оповещение (JSON.stringify (данные)); или предупреждение (данные [0] .id); –

+0

Я частично решил проблему, изменив свое событие с «change» на «blur», но было бы неплохо, если бы оно сработало с изменением – xNeyte

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