Кодирование данных в JSON - PullRequest
1 голос
/ 22 марта 2012

Мой новый код с обновленными изменениями.Нажатие кнопки после ввода числа не влияет на форму.

Front-End

 $(document).ready(function(){
$("#go").click(function() {
    var id=$("#myid").val();
    $.getJSON('find.php',{num:id},function(obj){
       alert(obj.toSource());
       $("input.fname").val(obj.FirstName); 
       $("input.sname").val(obj.Surname); 
       $("input.age").val(obj.Age); 

     });
 });
});

Форма

 ID: <input type="text" name="id" class="myid">
 <input type="button" value="Go" id="go" />

 First Name: <input type="text" name="FirstName" class="fname"><br>
 Surname: <input type="text" name="Surname" class="sname"><br>
 Age: <input type="text" name="Age" class="age"><br>

Back-End

 $id = $_GET['num'];

 $result = array('FirstName' => 1, 'Surname' => 2, 'Age' => 3);

 echo json_encode($result);

Ответы [ 4 ]

1 голос
/ 22 марта 2012

obj.length будет undefined, и вы вызываете объект ответа obj, а не data.PHP вернет вам следующее:

{
    "FirstName": 1,
    "Surname": 2,
    "Age": 3
}

Для этого обновите свой JS до:

// if (obj.length>0){   remove this
   jQuery("input.fname").val(obj.FirstName); 
   jQuery("input.sname").val(obj.Surname); 
   jQuery("input.age").val(obj.Age); 
// }  and this...

Обратите внимание на чувствительность к регистру JavaScript.

Кроме того, как отметил Никола Пелучетти, вы должны проверять $_GET['num'], а не $_GET['id'].

У вас также должна быть больше защита от атак SQL-инъекций.Сбросьте свой ввод с помощью mysql_real_escape_string как минимум:

$query = "SELECT * FROM Customers WHERE ID = '" . mysql_real_escape_string($id) . '"';
1 голос
/ 22 марта 2012

Я думаю, что это здесь

$id = $_GET['num'];

вместо

$id = $_GET['id']; 

, потому что ваша строка запроса должна быть чем-то вроде

find.php?num=3

, а затем лучше смотреть ваш кодошибка должна быть

   jQuery("input.fname").val(obj.FirstName); 
   jQuery("input.sname").val(obj.Surname); 
   jQuery("input.age").val(obj.Age); 

без obj.length, как правильно указано в другом ответе

0 голосов
/ 22 марта 2012

Оформить заказ с кодом.

<script type="text/javascript">
$(document).ready(function(){
    $("#go").click(function() {
        var id=$("#myid").val();
        $.getJSON('http://localhost/test/test/json_action.php',{num:id},function(obj){
            //alert(obj.toSource());
           $("input.fname").val(obj.FirstName); 
           $("input.sname").val(obj.Surname); 
           $("input.age").val(obj.Age); 

         });
     });
});
</script>
<input type="hidden" name="myid" id="myid" value="2" />
<input type="button" value="Go" id="go" />
<input type="text" class="fname" />
<input type="text" class="sname" />
<input type="text" class="age" />

json_action.php

$result = array('FirstName' => 1, 'Surname' => 2, 'Age' => 3);

echo json_encode($result);

Выше почти такой же, как ваш код, и я могу заполнить значение, нажав кнопку Go. И вы получаете эту ошибку 'неопределенная ошибка индекса -> Примечание: неопределенный индекс: число в : ******** *** \ website \ find.php в строке 10, потому что вы не передаете идентификатор в своем запросе. Кстати, я не вижу никакого использования запроса, поэтому я удалил в моем файле json_action.php. Надеюсь, это поможет вам.

0 голосов
/ 22 марта 2012

Заменить {num:id} на {id:id}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...