所以我有这个代码用PHP和AJAX POST数据而不重定向页面,我在登录页面上使用相同的脚本。登录页面就像一个魅力,但其他页面不是。这些之间唯一的区别是登录php脚本页面使用if (empty($_POST) === false) {}
而其他页面使用if (isset($_POST['save-settings'])) {}
。我不知道该怎么做..下面是我正在使用的脚本。
HTML BUTTON
<input id="save-settings" class="submit" type="submit" name="save-settings" value="Save" onclick="return false;" />
JS SCRIPT
$(document).ready(function() {
$("#save-settings").click(function() {
var name = $("#webname").val();
var charset = $("#webchar").val();
var meta = $("#webmeta").val();
var description = $("#webdesc").val();
var startsite = $("#webstartsite").val();
var starturl = $("#webstartsiteurl").val();
var footer = $("#webfooter").val();
$.post("../lib/action.php", {
name: name,
charset: charset,
meta: meta,
description: description,
startsite: startsite,
starturl: starturl,
footer: footer
}, function(data) {
$("#gy-main-notification-bar").hide().html("<h1>!</h1><h2>" + data + "</h2>").slideDown(500);
setTimeout(function() { $("#gy-main-notification-bar").slideUp(500) }, 2500);
});
});
});
PHP SCRIPT
if(isset($_POST['save-settings'])) {
$updatesettings = "UPDATE `settings` SET
`name`='".escape($_POST['webname'])."',
`charset`='".escape($_POST['webchar'])."',
`meta`='".escape($_POST['webmeta'])."',
`description`='".escape($_POST['webdesc'])."',
`startsite`='".escape($_POST['webstartsite'])."',
`starturl`='".escape($_POST['webstartsiteurl'])."',
`footer`='".escape($_POST['webfooter'])."'
WHERE `id`= 1";
if ($update_settings = $db_connect->query($updatesettings)) {}
echo 'Success!';
}
由于我在一个action.php文件中包含了所有isset
脚本,因此我真的不想将脚本中的empty
更改为"onclick"
。当我从输入中移除onclick="return:false;"
时,它会起作用。我很困惑,我对任何帮助感到高兴!
答案 0 :(得分:1)
Click事件处理函数可以有事件参数。捕获此参数时,可以使用preventDefault()方法。使用此方法,将阻止点击的默认操作,并且不会刷新页面。
更改
$("#save-settings").click(function() {
var name = $("#webname").val();
到
$("#save-settings").click(function(ev) {
ev.preventDefault();
var name = $("#webname").val();
答案 1 :(得分:0)
您忘记包含帖子保存设置。您可能应该将它包含在这样的ajax帖子中:
$.post("../lib/action.php", {
'name': name,
'charset': charset,
'meta': meta,
'save-settings': true,
'description': description,
'startsite': startsite,
'starturl': starturl,
'footer': footer
},
在sql语句中更改此内容以获取正确的帖子
`name`='".escape($_POST['name'])."',
`charset`='".escape($_POST['charset'])."',
`meta`='".escape($_POST['meta'])."',
`description`='".escape($_POST['description'])."',
`startsite`='".escape($_POST['startsite'])."',
`starturl`='".escape($_POST['starturl'])."',
`footer`='".escape($_POST['footer'])."'
WHERE `id`= 1";
答案 2 :(得分:0)
在HTML中编写onclick="return false"
会取消执行javascript代码。只需删除此onclick="..."
并添加preventDefault()
,以防止表单提交
$("#save-settings").click(function(e) {
e.preventDefault();
.....