- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是 JavaScript 的新手,正在与一些开发人员一起从事一个业余爱好项目。我们有一个简单的页面,用于向数据库提交请求。
我决定尝试学习 JQuery,并开始在这个请求页面中实现一些 AJAX 功能。它在 FireFox、IE 和 Safari 中运行良好,但由于某些奇怪的原因,我无法在 Chrome 中运行它。
我已经调试了几个小时了,我不知道为什么它不工作。这是 HTML 表单的相关部分(由于 JavaScript 而删除了后操作):
<form method="POST">
<input type="text" name="amount" value="0" size="7" />
<input type="submit" value="Fulfill!" /><br />
<input type="hidden" name="index" value="69" />
<input type="hidden" name="item" value="Iron Ore" />
</form>
这是它发布到的 PHP 表单:
<?php
require_once("../classes/Database.php");
$database = new Database();
$amount = $database->sanitizeString($_POST['amount']);
$index = $database->sanitizeString($_POST['index']);
$username = $database->sanitizeString($_POST['username']);
$item = $database->sanitizeString($_POST['item']);
$database->connect();
$database->setRequest($amount, $index, $username, $item);
$database->setKarma($username, $amount, $item);
?>
最重要的是,这是我在 HTML 文件中的新手 JavaScript 代码:
<script language="JavaScript">
var amount = 0;
var index = 0;
var item = 0;
var username = "";
var data = "";
$(document).ready(function(){
$("form input[type=submit]").click(function(){
amount = $(this).siblings("input[name=amount]").val();
index = $(this).siblings("input[name=index]").val();
item = $(this).siblings("input[name=item]").val();
username = "<?=$_SESSION['username']; ?>";
//var stuff = $.post("pages/ajaxfulfill.php", {amount:amount,index:index,item:item, username:username}, function(data){alert(data)}, "html");
var stuff = $.ajax(
{
url: "pages/ajaxfulfill.php",
type: "POST", data:"amount=" + amount + "&index=" + index + "&item=" + item + "&username=" + username,
success: function(data)
{
alert("Success")
},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
alert("error" + XMLHttpRequest.status);
alert("error" + XMLHttpRequest.responseText);
}
}
)
$(this).parents("td").text("Submitted");
});
});
</script>
起初,我使用的是注释掉的 $.post 函数,它适用于上述浏览器。我在调试过程中尝试切换到 $.ajax 函数,发现 FF、IE 和 Safari 总是返回“成功”警报,而 Chrome 返回状态为 0 的错误和空白响应。
作为一个 JavaScript 新手,我完全不知道为什么会失败。如果有人能指出我正确的方向,我将向你致以深深的敬意和良好的祝愿。谢谢。
最佳答案
您似乎没有阻止提交按钮上的默认操作。因此,在您的点击功能触发后,表单仍会提交,可能会取消您的 XMLHttpRequest。
(这里跨浏览器可能有所不同的是,在函数的末尾,您通过调用 text()
函数从页面中删除表单。是否应该停止提交表单?不知道.. . 一些浏览器可能,但没有规范这样说。)
使用 event.preventDefault();
关于传递给处理程序的参数 function(event) { ... }
停止单击按钮以提交表单。
但不要将表单提交代码绑定(bind)到输入按钮。您的脚本可能(取决于浏览器和表单的其他属性)无法触发另一种提交,例如 Enter 键。始终使用 submit
绑定(bind)验证和 AJAX 表单替换form
上的事件本身。 event.preventDefault();
仍然适用。
省略 action
<form>
的属性是无效的;浏览器通常选择现有页面的 URL 来提交。如果您想要提交没有表单的表单字段(并且您不需要 radio 输入),只需省略 <form>
元素。但实际上你应该使用渐进式增强:首先使用适当的 method="POST" action="ajaxfulfill.php"
使表单从纯 HTML 工作。 ,然后然后在此基础上构建一个简单的 AJAX 函数。
username = "<?=$_SESSION['username']; ?>";
脚本注入(inject)。相反:
username= <?= json_encode($_SESSION['username'], JSON_HEX_TAG); ?>
和:
data:"amount=" + amount + "&index=" + index + "&item=" + item + "&username=" + username,
您需要使用 encodeURIComponent(...)
超过 URL 编码表单提交中的每个值,否则特殊字符会破坏它。最好让 jQuery 为你做这件事:
data: {amount: amount, index: index, item: item, username: username},
或者更简单,放弃对 field.val()
的所有手动阅读并且只使用现有的 serialize为您完成这一切的功能:
data: $(this).serialize(),
(假设 this
现在是 form
你正在处理 onsubmit
为...如果它是提交按钮,你必须说 $(this.form)
。)
您真的要从用户提交的 POST 数据中获取用户名吗?他们可能已经更改了这些数据?除非用户名是故意不安全的,否则从它来自的 session 中获取它似乎是一个更好的主意。
关于JavaScript JQuery Ajax 问题 : POST Works fine in Firefox, IE、Safari 但不是 Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1864160/
微调 API 中关于 model 属性的 OpenAI 文档说明有点令人困惑: model The name of the base model to fine-tune. You can selec
微调 API 中关于 model 属性的 OpenAI 文档说明有点令人困惑: model The name of the base model to fine-tune. You can selec
当涉及到语言模型(LLM)的教学微调时,什么时候应该选择有监督的微调培训器(SFTTrainer)而不是常规的Transformers培训器?据我所知,常规的Transformers培训人员通常指的是
最近在处理后台数据时需要实现文件上传.考虑到对浏览器适配上采用Fine Uploader. Fine Uploader 采用ajax方式实现对文件上传.同时在浏览器中直接支持文件拖拽[对浏览器版本有
1f45bd1e8577af66a05f5e3fadb0b29 通过ORPO对llama进行微调 前言 ORPO是一种新颖的微调技术,它将传统的监督微调和偏好对齐阶段整合到一个过程中。这减少了训
我希望使用 Fineuploader 为每个上传的项目添加标题/名称。每个附件都会在其旁边显示一个文本框,以便用户可以在按“上传”之前输入标题/名称 like this 我看过了,每个上传请求都会发送
假设我想一次上传多个文件,将 multiple 选项设置为 true 时我可以这样做: var myUploader = new qq.FineUploader({ element: $('#
使用 Fineuploader v3.3 的 jQuery 封装版本。 是否可以使用上传文件夹中已有的文件填充文件列表? 我认为“_addToList(id, name)”应该可以解决问题,但我无法让
log4j.properties log4j.rootLogger=FINE, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppende
我想在我的小程序中使用 java util 日志记录,日志级别为 FINE 及以下。 我在我的小程序的 jar 中放了一个 logging.properties 文件 handlers= java.u
我的域层需要一个实体具有与之关联的 1:N 图像。 由于 FineUploader 将每个图像作为单独的请求发送,我在第一个请求上创建一个实体(服务器端),并在第一个响应 JSON 中发送回该 ID
关闭。这个问题需要debugging details .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2年前关闭。 Improve this questio
我阅读了有关使用 Fine Uploader 进行缩放的文档: http://docs.fineuploader.com/features/scaling.html 是否可以仅考虑图片的高度来缩放图片
我正在使用很好的 uploader ,它运行得很好。现在,即使上传成功,它也会重试。这样一来,我就有了四个文件,而不是只有一个。 http://fineuploader.com/ 我的代码:
当我运行 Maven 时,我得到的输出就好像我指定了日志记录级别 FINE 一样,这使得很难找到实际的输出。我还得到了数百行列出显式和隐式绑定(bind)的信息。据我所知我根本没有配置 mvn 。我正
我在我的表单中使用 FineUploader:http://docs.fineuploader.com/branch/master/features/forms.html . 问题是,在我的表单文件中
我已经为此发了几个小时的消息,但无法让它工作。我对fineuploader的实现 $(document).ready(function() { //alert(qq.supportedFeatures
我有一个关于 fine uploader (3.0) 的奇怪问题,它适用于除 ie9 之外的所有浏览器。 没有js错误,就是上传一个0byte失败了。我正在使用 valums php,它在这里失败了:
我正在实现类似 Google Plus 上传窗口的功能,当窗口中的整个灰色区域 (div) 都可以点击时,文件选择器就会出现。 这是我正在尝试做的事情的简单模型代码 (jsfiddle) $(func
我正在使用Fine-uploader(繁体版)试图让用户上传文件到我们自己的服务器。我现在面临的挑战是我应该在正常上传过程之前先从服务器获取 token 。 token 将与每个上传请求/ block
我是一名优秀的程序员,十分优秀!