【发布时间】:2023-08-04 22:48:01
【问题描述】:
正如下面的 inkedmn 所指出的,我最初发布的内容相当于一堵代码 - 太多了,任何人都无法帮助我。因此,我没有创建一个新的问题/线程,而是决定重做这个 - 标题仍然适用于问题。
我正在尝试实现jQuery Form 插件。我的最终目标是 1)在提交之前验证表格 2)上传选择的文件,和 3) 将提交的表单数据发送到处理脚本,并将文件和表单数据写入数据库。
我使用某种 ajax 插件进行此操作的前 三个 尝试都失败了。因此,我从一个简单的 ajax 表单开始,该表单将两个表单字段发送到一个脚本,该脚本应该返回成功运行,然后显示一条消息。然后,一旦我开始工作,我将逐步处理数据,然后(希望)上传文件。
以下代码取自 jQuery Form 插件的示例代码。
这是 HTML 表单:
<form id="myForm" action="testProcessAjaxUploadForm.php" method="post">
Name: <input type="text" name="name" />
Comment: <textarea name="comment"></textarea>
<input type="submit" value="Submit Comment" />
</form>
这是 jQuery 代码:
// bind 'myForm' and provide a simple callback function
$('#myForm').ajaxForm(function() {
alert("Thank you for your comment!");
});
这是假定处理检索到的表单数据并返回一些内容以便显示 javascript 警报的 php 代码:
<?php
require_once ('../scripts/logging.php');
$log = new Logging();
if (isset($_POST['comment']) && isset($_POST['name'])) {
$log->lwrite('name: ' . $_POST['name'] . ', comment: ' . $_POST['comment']);
} else {
$log->lwrite('Nothing passed to the script.');
}
//return true;
return $_POST['name'];
//echo $_POST['name'];
第一行记录写入日志文件,所以我知道脚本正在执行。当使用任一返回行时,浏览器只会在地址栏中加载一个带有脚本文件名的空白页面,当使用 echo 时,名称会显示在页面上,而脚本的文件名则显示在地址栏中。在任何情况下,javascript 的谢谢消息都不会显示。
我错过了什么?
更新
PHP 代码可以正常工作就我编写它的方式而言。这意味着它可以获取已发布的表单字段并使用它们。 jQuery Form 插件示例页面说明了示例代码,“如果服务器返回成功状态,那么用户将看到“谢谢”消息。所以我想我的问题是,“应该返回什么 php 脚本会导致 jQuery 代码检测到成功响应以便显示感谢消息?
Link to testing pagephp脚本内容可以在comment.txt文件中与网页同文件夹查看
【问题讨论】:
-
如果您提供特定/问题或问题,您可能会更幸运地让人们回答。您已经发布了大量代码进行整理,但并没有详细说明您的问题。
-
点得好,着墨。我知道要查看很多代码。当我发布它时,我想了很多,但我不知道从哪里开始或如何找出导致设置不起作用的原因。尽管它隐藏在我的帖子的第一段中,但我将重申代码当前正在执行的操作:根据需要上传文件并将信息写入数据库,但页面会刷新。我对现有代码的期望是要显示的警报并且页面不会刷新。如果有人能建议如何减少我必须更轻松地排除故障,那就太好了。
-
如果你只是得到一个空白页,我猜你的 PHP 脚本有问题。我建议将您的 PHP 精简为非常基本且易于扫描的错误,看看是否可行,然后从那里构建您的 PHP 脚本。
-
@Jason,查看更新信息以解决您的建议。
标签: jquery forms plugins file-upload