【发布时间】:2014-08-19 11:55:19
【问题描述】:
所以我有这段代码可以在不重定向页面的情况下使用 PHP 和 AJAX 发布数据,我在登录页面上使用了相同的脚本。登录页面就像一个魅力,但其他页面没有。它们之间的唯一区别是登录php脚本页面使用if (empty($_POST) === false) {},而其他页面使用if (isset($_POST['save-settings'])) {}。我不知道该怎么做。下面是我正在使用的脚本。
HTML 按钮
<input id="save-settings" class="submit" type="submit" name="save-settings" value="Save" onclick="return false;" />
JS 脚本
$(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 脚本
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!';
}
我真的不想将脚本中的isset 更改为empty,因为我将所有"onclick" 脚本都放在一个action.php 文件中。当我从输入中删除 onclick="return:false;" 时,它可以工作了。我很困惑,我希望有任何帮助!
【问题讨论】:
-
既然您在#save-settings 上捕获点击事件,为什么不使用按钮输入而不是提交输入呢?这样您就不需要拦截标准行为,也不需要 onClick 处理程序。
标签: javascript php html ajax mysqli