帮助理解jQuery $ .post - 使用/ code示例

时间:2010-08-20 09:44:22

标签: jquery ajax .post

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

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

我正在努力理解这一点。所以,在我附近有jquery $ .post引用链接:

1)将post请求发送到testeUpdate.php,然后,我们可以传递一个名为'autocomplete'的字符串。精确?

问题1) 使用该字符串传递发布请求意味着我们可以稍后,例如, 通过具体指向条件请求的进程: $ _POST [ '自动完成']; ?

2) 后来,我们有一个“on success”回调函数接受一个参数dadosReposta。精确?

问题2) 这个dadosResposta可能来自我们的服务器端脚本?是 这是一个包含我们收到的数据的论据吗?

3)因此,一旦成功,我们想要做的是:用一些值填充一些输入元素。 VAL(dadosResposta.nsName);

问题3) 这种“点符号”是一种访问json格式数据的方式 - 或者这是像往常一样在DOM上行走的方式吗?是这样,那么json在这里扮演什么角色?

提前多多感谢, MEM

3 个答案:

答案 0 :(得分:1)

  1. 是的,这是正确的,它是唯一的帖子变量,例如你正在检查isset($_POST['autocomplete']),虽然看起来你想在这里实际传递文本框值,因为自动填充通常依赖于你已经输入的内容。
  2. 是这个函数在响应回来时运行,参数是从PHP页面返回的任何数据。
  3. 响应应该是这样的:
     { nsName: 'name', nsAddress: 'address' }
    它使用这些值来填充这两个字段,因此点表示法从响应获取值,JSON只是使它更清洁:)

答案 1 :(得分:1)

1)是的,然后可以使用PHP以这种方式访问​​自动完成。 ($ _POST [ '自动完成'])。但除了它在isset()上显示的事实之外 - 它不会有任何数据。

2)是的,dadosResposta是将从服务器返回的响应。如果您在$ .post请求中将最后一个参数设置为json,则可以在javaScript中将其本身用作json对象。要以这种方式显示数据,您可以在PHP中使用json_encode()

3)一旦您的数据进入,您可以随心所欲。但点符号仅在json格式正确时才有效。参考:json.org

4)点符号是一种访问以json格式返回的数据的方式,与DOM无关。如果将$ .post的最后一部分更改为“text”,则从服务器返回的数据可以作为常规字符串处理。

答案 2 :(得分:1)

我在jsFiddle上使用了你的代码,并尝试建立在你拥有的东西上,你可以看到我将数据发送到jsFiddle上的json echo函数,它响应如下(可能......如果它的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));
}