使用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");
}
});
希望这对你有所帮助