使用php的Jquery.post()

使用php的Jquery.post(),jquery,Jquery,我试图理解$.post()方法如何在Jquery中工作,而不使用$.ajax,正如我在php acadamy的视频教程中所看到的那样,但是作者将他的变量命名为相同的名称,这让人非常困惑 总的来说,这就是我计划做的: 该脚本假定为一个联系人脚本:当用户最终确定合同时(通过单击按钮),用户创建合同的各个行,这些行保存在多维对象/数组中,其中包含一个键和术语,键/term数组/object被发送到一个PHP脚本,该脚本将其保存在数据库中,然后将其发送回页面,以便正确解析 我要做的部分是将对象获取到ph

我试图理解
$.post()
方法如何在Jquery中工作,而不使用
$.ajax
,正如我在php acadamy的视频教程中所看到的那样,但是作者将他的变量命名为相同的名称,这让人非常困惑

总的来说,这就是我计划做的:

该脚本假定为一个联系人脚本:当用户最终确定合同时(通过单击按钮),用户创建合同的各个行,这些行保存在多维
对象/数组中,其中包含一个键和术语,
键/term数组/object
被发送到一个PHP脚本,该脚本将其保存在数据库中,然后将其发送回页面,以便正确解析

我要做的部分是将对象获取到php脚本,并从php脚本获取响应(最终显示)返回到jquery

    $('#createbtn').click(function() {
    $.each(terms_array,function(key, value) {
        var toAdd = value;
        $.post('contract_handler.php',{toAdd:toAdd}, function(data){
            $('contractlist').append(data);
        });

    });

});
我不确定{toAdd:toAdd}中发生了什么

我知道其中一个是jquery中的变量。另一个是PHP中变量的变量名吗?是不是应该传回的变量

<?php
if(isset($_POST['toAdd']))
    $x = $_POST['toAdd']
    //do database saving and parsing and what not...
    /* NOW HOW DO I GET X BACK TO THE JQUERY AS 'data' SO IT CAN DISPLAY IT??? /*
?>

您必须输出值,例如,使用
echo

echo $x;
我不确定{toAdd:toAdd}发生了什么。我知道其中一个是jquery中的变量。另一个是PHP中变量的变量名吗


{toAdd:toAdd}
是一个对象文字,它创建一个对象,该对象具有属性
toAdd
和变量
toAdd
的值。jQuery获取这个对象,对数据进行编码并将其发送到服务器。如果您正在执行GET请求,数据将添加到URL的查询字符串中。在POST请求中,数据将以相同的方式编码,但在请求正文中发送。
因此,假设
toAdd
42
,则编码数据如下所示:

toAdd=42

在PHP中,您可以使用
$\u GET['toAdd']
$\u POST['toAdd']
访问数据,具体取决于所使用的方法。

{toAdd:toAdd}
是传递到url的数据

其中第一部分是参数名,第二部分是值,这里它是一个变量,因此传递变量的值

同样在上述情况下,toAdd变量的值和每个handler方法的
value
参数的值相同,所以它可以写成

$.each(terms_array,function(key, value) {
    $.post('contract_handler.php',{toAdd: value}, function(data){
        $('contractlist').append(data);
    });

});

$.post()
$.ajax()
之间没有太大区别
$.post()
$.get()
只是发送基本post和get请求的快捷方式。另外,在您的示例中,您可能希望将
value
用于向服务器发送数据

$.post('contract_handler.php', {toAdd: value}, function (data) {
    $('contractlist').append(data);
});

$.ajax({
    type : 'POST',
    url  : 'contract_handler.php',
    data : {
        toAdd: value
    },
    success: function (data) {
        $('contractlist').append(data);
    }
});
这同样适用于
$.get()
。如果您只需要传递数据并且只需要成功回调,
$.post()
适合您。如果需要更多配置,请切换到
$.ajax()

根据您提供的内容,您需要在php脚本中回显
$x
,以便它将在数据变量中返回。考虑到更高的编程实践,我绝对建议您对返回数据进行JSON编码

echo JSON_encode($x);
这允许您将更具体的数据与返回数据一起传递回去,并允许您在javascript中保留任何DOM操作。如果我不是像你的例子所建议的那样处于RESTful环境中,我会将数据发送回包装器中,给自己一些成功状态和服务器消息

$return = array(
    status  : 1,
    message : 'Successfully added',
    data    : $x
);
echo JSON_encode($return);
这样,在成功回调中,您可以检查以确保没有任何错误,如果有,您已经准备好显示服务器消息

$.post('contract_handler.php', {toAdd: value}, function (response) {
    if (response.status=== 1) {
        // Server was successful, now do your thing
        $('contractlist').append(data.data);
    }
    else {
        // Server encountered an error, alert the user
        /*
            UI Error Handling Here
         */

        // Throw console error for debugging while in development
        console.error("Error " + response.status + ": " + response.message");
    }
});
希望这对你有所帮助