2

我正在为我的东西使用 ajax/jquery。我可以正确地使用下面的代码。我为两者阅读了多个参考资料。但是,以我自己的例子为例,我会感到高兴。这是我的代码:

var a = JSON.parse(json);       
            $.post('movies_db.php',{'myd':a}, function(data) 
            {
                $.ajax({
            url:'url.php'
            ,async:     true
            ,cache:     false
            ,dataType:  'html'
            ,success:   function(data){
                $('body').html(data);
                FB.XFBML.parse();
                    }
        });      
            });

有人可以在技术层面上说明工作或 ajax/jquery 吗?$.post('movies_db.php',{'myd':a}, function(data)需要注意。

如果我想在这里发送多个值,例如 $x、$y、$z,该怎么办?就够{'myd':$x, $y,$z}了吗?

4

3 回答 3

1

好吧,听起来不是很苛刻,但首先让我们格式化您的代码,以便我们可以阅读它:)

var a = JSON.parse(json);
$.post('movies_db.php',{'myd':a}, function (data) {
    $.ajax({
        url: 'url.php',
        async: true,
        cache: false,
        dataType: 'html',
        success: function (data) {
            $('body').html(data);
            FB.XFBML.parse();
        }
    });
});

因此,您将$.post变量中的数据a添加到您的movies_db.php. 中的数据a将在您的服务器上显示为$_POST['myd'].

如果要发送更多值,则需要向传入的对象添加更多键{'myd':a}。例如:

{'myd':a, 'other_data': some_var}

您的示例是$x$y$z,但这不是 PHP,除非您想在页面呈现时打印这些值。

接下来,当$.post请求完成时,它会调用function (data)回调,然后看起来您正在发送另一个$.ajax请求。在第二个请求中,您没有发送任何数据,您只是html通过外观加载。然后,您将该 HTML 插入到body文档的标签中。

“AJAX”请求

AJAX 的意思是“异步 javascript 和 xml”,对于可以加载任何类型内容的东西来说,这是一个可怕的名称。当您调用 时$.ajax,您正在向您的服务器发出 HTTPGET请求,您可以为此传递任何您喜欢的数据。正如 ps2goat 所提到的,您还可以POST在“常规”$.ajax请求中指定请求类型。

$.post是一个 HTTPPOST请求,它也发送数据,但在后台以不同的方式发送。您通常以这种方式上传文件或发布表单数据。我们使用“AJAX”的事实仅仅意味着我们正在使用浏览器的内置XMLHTTPRequest方法(同样,一个可怕的名字)。

因为 javascript 是异步的,所以您需要指定一个回调 (your function) 来处理您的调用响应。显然,您function将传递响应的结果。error如果请求中有错误,它将使用您尚未指定的回调来处理。

我希望这能让你走上正确的轨道。

亚伦

于 2013-10-03T05:54:32.193 回答
1
"What if I want to sent multiple values here like $x, $y, $z. Just {'myd':$x, $y,$z} is enough?"

不。您需要发送如下键值对:

{'myd':$x, 'y': $y, 'z': $z}

为什么需要下线?我不知道。下面的行将 json 转换为对象,并且您将对象作为参数传递给 ajax 调用。我认为您可以只传递 json 而无需解析,然后在服务器端对其进行解码以检索值:

var a = JSON.parse(json);

在服务器端,您可以使用 json 从 json 获取对象

json_decode($yourGetParam);

要将 json 转换为数组,请将第二个参数添加为 true:

$myarray = json_decode($yourGetParam, true);
于 2013-10-03T05:38:11.907 回答
1

您正在a使用post request在 myd 变量中发送一个 json 对象。

包含ajax请求$.ajax({...})success函数就是post请求的函数$.post('movies_db.php'....)

ajax 请求在成功时以指定的格式发送数据。在这种情况下,它被指定为html。这个 html 响应data被用来替换文档的 body 标记的内容。

What if I want to sent multiple values here like $x, $y, $z. Just {'myd':$x, $y,$z} is enough?

使用数组 var a = JSON.parse("[x,y,z]"); {'myd':a} 直接将数组设置为 myd 变量的值{'myd':[$x, $y,$z]} 您必须在服务器端处理此数组,因为它被传递到单个参数myd中。

于 2013-10-03T05:59:19.813 回答