我一直在尝试从 Javascript 提示符中获取用户输入到 PHP 函数中,并且在这样做时遇到了很多麻烦。我在尝试 jQuery 的 $.post 方法时不知所措——因为 PHP 根本不想执行,不知道为什么。
无论如何,这是我目前正在做的事情的要点:
1 一个项目及其数据是从数据库加载的 - 此信息显示在表格中。
2 表中的所有数据都可以通过 Javascript prompt() 进行编辑,我为此使用的代码如下:
<div id="lvl3"><a href="" onclick="popupprompt(1); return false"><?php echo $fetchdata['name']; ?></a></div>
上面的工作是这样的:lvl3 是字体样式的标签;空白href使其充当链接;popupprompt 是我制作的提示功能,它有一个参数,“类型”或正在编辑的内容(1 为项目名称,2 为项目描述等);返回 false 所以页面不会重新加载;php echo 在表格中显示项目数据。
3 一旦用户单击上面的对象,它就会执行一个名为 popupprompt 的 javascript 函数,该函数接受一个“类型”参数,或者正在更改的项目信息。该函数的代码如下:
function popupprompt(type) {
switch(type)
{
case 1:
var name = prompt("Project Name:", "");
if (name != null && name != "")
{
//Change Project Name
var getname = name;
var gettype = type;
$.post("edit.php", { type: gettype, name: getname });
} else if (name == "") {
senderror("Please enter a valid Project Name");
} else {
//Prompt canceled
sendnotification('Canceled my ass!');
}
break;
case 2:
//Description?
case 3:
//Version?
case 4:
//Release?
default:
alert("There was an error processing your request.");
break;
} }
我在这个函数中遇到的问题是 edit.php 中没有任何内容被执行——我一点也不知道为什么。此外,我不得不更改括号,以便它在代码框中正确显示 - 所以不要介意那些。
4 无论如何,现在用户输入已发布到 edit.php- 这不起作用,但我还是会发布它:
<?php
$type = $_POST['type'];
$name = $_POST['name'];
switch($type) {
case 1:
dbconnect();
$urlext = geturlext();
$authenticated = isauthenticated();
if ($authenticated == false)
{
echo("<script>senderror('Access denied');</script>");
} else {
//Escape and trim input
$input = trim($input);
$input = mysql_real_escape_string($input);
$update = "UPDATE 'projects' SET 'name' = '$input' WHERE 'name' = '$urlext'";
$updatequery = mysql_query($update) or die(mysql_error());
echo("<script>sendnotification('Project Name updated');</script>");
}
break;
default:
break;
}
?>
再次不得不移动一些括号。但无论如何——这个函数应该更新数据库中的数据——然而,它什么也不做。我已经在开始时放置了警报,但它们从未被调用过。
无论如何,长话短说-如果您知道我做错了什么,请赐教,另外,如果有更好的方法可以做到这一点-请告诉我!
我感谢所有帮助,谢谢