我有一个使用JQueryUI的可排序列表,并使用JQuery Every函数将AJAX请求保存到基本PHP文件中。请求看起来很好(Firebug控制台),但不是每个人都被PHP文件保存,更糟糕的是它似乎不一致,有些id更可能失败但这似乎与他们的位置有关在列表中!这真的很奇怪,有什么想法吗?
我尝试过GET / POST,同步/异步,没有任何区别。
的Javascript
function SaveChanges() {
priority = 0;
$("#p_menu li").each(function() {
if($(this).attr("class") != "range") {
$.ajax({"url": "lib/product-menu-save.php", "data": "pm_id="+this.id+"&priority="+priority, "type": "GET"});
priority++;
}
});
}
PHP文件
<?php
require_once '../includes/adminsession.php';
require_once '../lib/mysql.php';
$pm_id = $_GET['pm_id'];
$pm_priority = str_pad($_GET['priority'], 4, '0', STR_PAD_LEFT);
$save_stmt = $db->prepare("UPDATE products SET priority = ? WHERE id = ?");
$save_stmt->bind_param('si', $pm_priority, $pm_id);
if(!$save_stmt->execute()) echo $save_stmt->error; else echo 'SUCCESS';
数据看起来很好,进入AJAX请求,并为每个请求返回SUCCESS。如果相关,大约有60个项目。
答案 0 :(得分:0)
您可以将ID作为列表发送,以便将AJAX请求最小化为单个 (因为您将所有ID一起发送,您不需要发送优先级..您可以处理该服务器端)
function SaveChanges() {
var id_list = [];
$("#p_menu li").each(function() {
if($(this).attr("class") != "range") {
id_list.push( this.id );
}
});
$.ajax({
url : 'lib/product-menu-save.php',
data : {ids: id_list},
type : 'POST'
});
}
和(类似的东西,因为我不精通PHP )
$save_stmt = $db->prepare("UPDATE products SET priority = ? WHERE id = ?");
$pm_priority_value = 0;
foreach ($_POST['ids'] as $pm_id) {
$pm_priority = str_pad($pm_priority_value, 4, '0', STR_PAD_LEFT);
$save_stmt->bind_param('si', $pm_priority, $pm_id);
if(!$save_stmt->execute()) echo $save_stmt->error; else echo 'SUCCESS';
$pm_priority_value++;
}