2012-03-22 4 views
1

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

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); 
+0

Вы даже не объяснили, есть ли проблемы. Каков ваш текущий код и что вы хотите сделать? –

+2

Привет, я хочу, чтобы код взял данные, найденные в выбранной записи, и использовал их для заполнения элементов в форме элементов, например, «fname»/«sname»/«age». В настоящее время нет ответа при вводе идентификатора и отсутствии причин в инструментах разработчика браузеров. – William

+1

@ William231: ваш обновленный код должен работать нормально. Попробуйте перейти к 'find.php? Num = whatever' самостоятельно и посмотреть, какой результат предоставляет сервер. – Matt

ответ

1

obj.length будет be 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.

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

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

$query = "SELECT * FROM Customers WHERE ID = '" . mysql_real_escape_string($id) . '"'; 
1

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

$id = $_GET['num']; 

вместо

$id = $_GET['id']; 

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

find.php?num=3 

конца, то выглядеть лучше на ваш код ошибки должен быть

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

без obj.length, как указано правильно в соседний ranswer

0

Checkout ниже кода с вашим кодом.

<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. И вы получаете эту ошибку "неопределенная ошибка индекс -> Примечание: Undefined индекс: Num в : ** * ** * ** * ** \ сайт \ find.php на линии 10 ', потому что вы не передаете идентификатор в своем запросе. Кстати, я не вижу возможности использовать запрос, поэтому я удалил его в файле json_action.php. Надеюсь, что это поможет вам.

+0

также включил оповещение для вашей справки. – Kamal

+2

Я отредактирую свой вопрос с новым кодом, но пока не работает – William