Справка по пониманию jQuery $ .post - с примером кода - PullRequest
1 голос
/ 20 августа 2010
$.post('testeUpdate.php', 'autocomplete',
        function(dadosResposta) {

            $('#ns-nome').val(dadosResposta.nsName);
            $('#ns-endereco').val(dadosResposta.nsAddress);
        },
    "json");

Я пытаюсь это понять.Поэтому, имея рядом со мной ссылку на jquery $ .post:

1) Запрос на отправку отправляется в testeUpdate.php, тогда мы можем передать строку с именем autocomplete.Точный?

Вопрос 1) Передача запроса на публикацию с этой строкой означает, что мы можем позже, например, обработать этот запрос по условному указанию, определенно указав на:«];?

2) Позже у нас есть функция обратного вызова «в случае успеха», которая принимает параметр, dadosReposta.Точный?

Вопрос 2) Эта dadosResposta может быть что-то из нашего серверного скрипта?Является ли этот аргумент данными, которые мы получаем?

3) Итак, в случае успеха, мы хотим сделать следующее: заполнить некоторый входной элемент некоторыми значениями.Val (dadosResposta.nsName);

Вопрос (ы) 3) это «точечная нотация» способ доступа к данным в формате json - или это способ ходить по DOM, как мы обычно делаем?Так, тогда какую роль здесь играет json?

Заранее большое спасибо, MEM

Ответы [ 3 ]

1 голос
/ 20 августа 2010

1) Да, к автозаполнению можно получить доступ с помощью PHP таким способом.($ _POST [ 'автозаполнения']).Но кроме того факта, что он будет показывать true в isset () - он не будет иметь никаких данных.

2) Да, dadosResposta - это ответ, который будет возвращен с сервера.Если вы указали последний параметр как json в своем запросе $ .post, его можно использовать в javaScript как объект json.Для отображения данных таким образом, в PHP вы можете использовать json_encode ()

3) Вы можете делать все, что угодно, как только ваши данные поступят. Но точечная нотация будет работать только при правильном форматировании json.Ссылка: json.org

4) Точечная запись представляет собой способ доступа к данным, возвращенным в формате json, не имеет ничего общего с DOM.Если вы измените последнюю часть вашего $ .post на «текст», данные, возвращаемые с сервера, могут обрабатываться как обычная строка.

1 голос
/ 20 августа 2010

Я использовал ваш код на jsFiddle и попытался использовать то, что у вас есть, как вы можете видеть, я отправил данные в функцию эхона json на jsFiddle, которая ответила так (вероятно ...PHP):

echo json_encode(array("post_response"=>$_POST));

Как видите, я изменил postData, чтобы он соответствовал запрашиваемому вами ответу, на стороне сервера он обычно выглядел бы примерно так в обычном сценарии:

if(isset($_POST['somedata']))
{
    //do stuff... you know, whatever
    echo json_encode(array("nsName" => $someString1,"nsAddress" => $someString2));
}
1 голос
/ 20 августа 2010
  1. Да, это правильно, это единственная переменная записи, например вы проверяете isset($_POST['autocomplete']), хотя кажется, что вы действительно хотите передать здесь значение текстового поля, поскольку автозаполнение обычно зависит от того, что вы уже ввели.
  2. Да, эта функция запускается, когда ответ возвращается, аргументом является то, какие данные возвращаются с вашей страницы PHP.
  3. Ответ должен выглядеть примерно так:
    { nsName: 'name', nsAddress: 'address' }
    Эти значения используются для заполнения этих двух полей, поэтому точечная запись получает значения из ответа , JSON просто делает это намного чище:)
...