Php 不传递任何POST值的Ajax调用
我有一张有可排序行的表。该表是从mysql数据库生成的,该数据库有一个名为“displayorder”的字段对该表进行排序。当用户拖放行时,我希望在用户每次拖放行时使用AJAX将这些更改提交到数据库 目前,我可以看到AJAX调用成功部分的console.log()输出,当我在那里输出数据(顺序)时,它看起来很棒,如下所示:Php 不传递任何POST值的Ajax调用,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我有一张有可排序行的表。该表是从mysql数据库生成的,该数据库有一个名为“displayorder”的字段对该表进行排序。当用户拖放行时,我希望在用户每次拖放行时使用AJAX将这些更改提交到数据库 目前,我可以看到AJAX调用成功部分的console.log()输出,当我在那里输出数据(顺序)时,它看起来很棒,如下所示: [“订单1=1”、“订单2=2”、“订单4=3”、“订单3=4”] 但是根据Firebug的说法,所有在$u帖子中传递的信息都是“未声明的”。 如何从indexpage\u
[“订单1=1”、“订单2=2”、“订单4=3”、“订单3=4”]
但是根据Firebug的说法,所有在$u帖子中传递的信息都是“未声明的”。
如何从indexpage\u order.php文件访问该order变量
我有这个jquery代码:
<script>
$(document).ready(function() {
var fixHelper = function(e, tr) {
var $originals = tr.children();
var $helper = tr.clone();
$helper.children().each(function(index)
{
$(this).width($originals.eq(index).width())
});
return $helper;
};
var sortable = $("#sort tbody").sortable({
helper: fixHelper,
stop: function(event, ui) {
//create an array with the new order
order = $(this).find('input').map(function(index, obj) {
var input = $(obj);
input.val(index + 1);
return input.attr('id') + '=' + (index + 1);
});
$.ajax({
type: 'POST',
url: 'indexpage_order.php',
data: order,
error: function() {
console.log("Theres an error with AJAX");
},
success: function(order) {
console.log("Saved.");
console.log(order);
}
});
return false;
}
});
});
</script>
使用ajax在PHP file for POST方法上尝试$\u REQUEST而不是$\u POST。看起来您是在JavaScript数组中发送订单的 当它到达PHP时,它是不可读的 如果是对象,请查看函数。 如果它是一个数组,则在数据开始之前序列化数据,然后在php端
除非正确编码/序列化JavaScript数组或对象,否则PHP无法理解这些数组或对象。将js数组
顺序
转换为json对象,因为ajax数据需要使用json.stringify
以json格式。因此,它需要是ajax函数中的data:JSON.stringify(order),
或者,在ajax函数中使用
json\u encode
如下data:,
,您可以简单地重写生成POST数据的js代码
order = {}
$(this).find('input').map(function(index, obj)
{
return order[this.id] = index;
}
)
Rest应该在PHP中工作 订单是一个数组。在ajax脚本中将
顺序
转换为查询字符串
数据:order.join('&'),
最有可能的顺序
格式不正确。您应该能够简单地使用$(this).find('input').serialize()
您可以执行控制台.log(order)
和代码中的适当点并向我们显示结果吗?作为旁注。。。似乎您正试图在SQL查询中直接使用来自$\u POST
超级全局的数据。决不能在SQL查询中直接使用$\u POST
或$\u GET
数据。这是SQL注入()的一个非常简单的目标。在SQL查询中使用数据之前,应始终清理来自用户的数据。这篇文章写得不错:console.log(order)在ajax调用中是“success”。在我的其他文件中显示[“order_1=1”、“order_2=2”、“order_4=3”、“order_3=4”]@c.hill,我正在用preg_替换进行消毒。我将在代码的其余部分正常工作后添加它。谢谢没有变化。我仍然在Firebug中获得列为“undefined”x4的POST值,源代码列为“undefined=&undefined=&undefined=&undefined=&undefined=&undefined=”我对此感到厌倦,现在我根本没有得到任何$\ POST。排序仍然有效,但我没有从AJAX调用中获得失败或成功消息。您能做一件事吗,请将警报(顺序)
放在$之前。AJAX({
并告诉我您在警报框中看到了什么这非常有效!!感谢您提供了一个简单、简单、简洁的答案!
order = {}
$(this).find('input').map(function(index, obj)
{
return order[this.id] = index;
}
)