Javascript Ajax向PHP传递值
我想通过ajax(在同一页面上)将多个值传递给php,下面是我的代码: HTML(user\u list.php):Javascript Ajax向PHP传递值,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我想通过ajax(在同一页面上)将多个值传递给php,下面是我的代码: HTML(user\u list.php): <button type="submit" class="button button-block savebutton" name="save_changes"/> Save changes</button> $(".savebutton").on("click", function (event) { event.prevent
<button type="submit" class="button button-block savebutton" name="save_changes"/>
Save changes</button>
$(".savebutton").on("click", function (event) {
event.preventDefault();
var js = [];
var i = 0;
$('select').each(function () {
var a = {"id": "", "permission": ""}
a.id = $(this).val();
a.permission = $(this).children(":selected").text();
js.push(a);
alert(js[i].permission + " - "+js[i].id);
i++;
});
$.ajax({
type: "POST",
url: "user_list.php",
data: {result: JSON.stringify(js)}
});
return false;
});
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['delete_selected'])) { // Button to delete selected user(s)
if (!empty($_POST['check_list'])) {
foreach ($_POST['check_list'] as $id) {
$sql = "DELETE FROM users WHERE id=$id";
$mysqli->query($sql);
header("Refresh:0"); //Refresh page
}
}
}
// Other if above works fine
elseif (isset($_POST['result'])){
// I want to get the js array with the values here after ajax
}
else {
// But I get here, and I don't get the js array
}
}
PHP(user\u list.PHP):
<button type="submit" class="button button-block savebutton" name="save_changes"/>
Save changes</button>
$(".savebutton").on("click", function (event) {
event.preventDefault();
var js = [];
var i = 0;
$('select').each(function () {
var a = {"id": "", "permission": ""}
a.id = $(this).val();
a.permission = $(this).children(":selected").text();
js.push(a);
alert(js[i].permission + " - "+js[i].id);
i++;
});
$.ajax({
type: "POST",
url: "user_list.php",
data: {result: JSON.stringify(js)}
});
return false;
});
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['delete_selected'])) { // Button to delete selected user(s)
if (!empty($_POST['check_list'])) {
foreach ($_POST['check_list'] as $id) {
$sql = "DELETE FROM users WHERE id=$id";
$mysqli->query($sql);
header("Refresh:0"); //Refresh page
}
}
}
// Other if above works fine
elseif (isset($_POST['result'])){
// I want to get the js array with the values here after ajax
}
else {
// But I get here, and I don't get the js array
}
}
所以我有两个问题,第一个是我通过了elseif,第二个是我没有得到数组。我认为问题在于ajax,因为填充数组可以正常工作
编辑:我将php移到了另一个页面,现在它可以工作了。试试这个
<button type="submit" class="button button-block savebutton" name="save_changes[]"/>Save changes</button>
保存更改
尽管您的Ajax请求已启动,但当您按下按钮时,“正常”提交请求也会启动。为了防止第二个请求(因此只保留Ajax请求),必须返回false
在onclick
回调的末尾
解决方案#1:
解决方案#2(也由@charlietfl提出):
似乎当您提交POST请求时,数据作为其自己的POST字段出现。只需检查您提交的内容的值。例如,如果您做了相同的操作,但将
foo
作为bar
和hello
作为world
,您可以使用如下内容检查foo
和hello
:
elseif (isset($_POST['foo'], $_POST['hello']) {
# your code
}
使用浏览器开发工具检查Ajax请求。请求在那里看起来不错吗?
if
语句中的其他条件是什么?如果'sTryvar\u dump($\u POST)),其中一个可能会击中并短路else代码>在PHP脚本的开头。这显示了什么?@ZoliSzabóarray(2){[“permission_select”]=>array(4){[0]=>string(1)“5”[1]=>string(2)“15”[2]=>string(2)“16”[3]=>string(2)“17”}[“save_changes”]=>array(1){[0]=>string(0)”}}如果您想立即读取数组,请不要将其字符串化,因为phpthat中的数组没有帮助:(或使用event.default
这确实有帮助,现在我在网络监视器中看到了post方法。但我仍然没有谈到php部分。请编辑您的问题并发布完整的php代码,这样我们也可以帮助您处理php部分。@ZoliSzabódone,但如果第一个很好,我只对第二个有问题。解释在哪里?只有代码的答案质量不好如果他们没有解释为什么代码会产生影响,或者什么被改变了,为什么