Помощь в понимании jQuery $ .post - с примером кода

StackOverflow https://stackoverflow.com/questions/3529742

  •  30-09-2019
  •  | 
  •  

Вопрос

$.post('testeUpdate.php', 'autocomplete',
        function(dadosResposta) {

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

Я пытаюсь это понять. Итак, и имея jQuery $.

1) Запрос сообщения отправляется на TesteUpdate.php, тогда мы можем передать строку с именем «AutoComplete». Точный?

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

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

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

3) Итак, об успехе, мы хотим сделать: заполнить какой -то входной элемент некоторыми значениями. val (dadosresposta.nsname);

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

Спасибо заранее, мем

Это было полезно?

Решение

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

2) Да DadoSresposta - это ответ, который вернется с сервера. Если вы установили последний параметр в качестве JSON в своем запросе $ .post, его можно использовать в JavaScript в качестве объекта JSON. Чтобы отобразить данные таким образом, в PHP вы можете использовать json_encode ()

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

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

Другие советы

  1. Да, это правильно, это единственная переменная пост, например, вы проверяете isset($_POST['autocomplete']), Хотя кажется, что вы захотите пройти здесь значение текстового поля, так как автозаполнение обычно опирается на то, что вы уже напечатали.
  2. Да, эта функция работает, когда ответ возвращается, аргумент - это то, что данные возвращаются со страницы PHP.
  3. Ответ должен выглядеть примерно так:
    { nsName: 'name', nsAddress: 'address' }
    Он использует эти значения для заполнения этих 2 полей, поэтому точечная нотация получает значения от ответа, Json просто делает это намного чище :)

Я использовал ваш код на jsfiddle и попытался построить на том, что у вас есть, как вы можете видеть, я отправил данные на функцию json echo на 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));
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top