Помощь в понимании jQuery $ .post - с примером кода
Вопрос
$.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, чтобы «текст» данные, возвращаемые с сервера, можно работать как обычная строка.
Другие советы
- Да, это правильно, это единственная переменная пост, например, вы проверяете
isset($_POST['autocomplete'])
, Хотя кажется, что вы захотите пройти здесь значение текстового поля, так как автозаполнение обычно опирается на то, что вы уже напечатали. - Да, эта функция работает, когда ответ возвращается, аргумент - это то, что данные возвращаются со страницы PHP.
- Ответ должен выглядеть примерно так:
{ 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));
}