简单的 AJax 调用不起作用 - 其他页面已加载
Simple AJax call is not working - Other page get loaded
我今天开始学习AJAX。我写了一个简单的 ajax 调用,但它不是异步获得响应,而是加载 PHP 脚本页面。就像普通的表单提交一样。
.html
<form id="form" method="POST" action="name.php">
<input type="text" name="Name">
<input type="submit" value="Submit" />
.JS
$("#form").submit(function(e) {
e.preventDefault();
var url = "name.php";
$.ajax({
type: "POST",
url: url,
data: $("#form").serialize(),
success: function(data)
{
alert(data);
}
});
});
.PHP
<?php
$data= $_POST['Name'];
echo $data;
?>
我不是在同一页面上获得警报,而是被重定向到具有我提交的值的name.php
。
将
ajax 调用包装在 $(document).ready()
解决了这个问题。
由于表单和提交按钮神奇地附带了固有的功能,因此在使用 AJAX 时通常最好避免使用它们。因此,例如,您仍然可以使用 <form>
元素作为字段包装器,但不要费心放入属性,因为您不会从那里使用它们。此外,将提交按钮替换为可以设置事件的标准锚点。下面是一个粗略的示例:
<form id="myForm">
<input type="text" name="myValue">
<a href="#" class="btn-submit">Submit</a>
</form>
和JS:
$('.btn-submit').on('click', function(e) {
e.preventDefault();
var url = '/my/route/to/call';
$.ajax({
type: "POST",
url: url,
data: $("#myForm").serialize(),
success: function(data)
{
alert(data);
}
});
});
正在发生的事情是表单提交按钮正在传播您未停止的事件。采用这种方法可以消除出现此类奇怪错误的可能性。
相关文章:
- 先在Angular中加载配置文件,然后再加载其他文件
- 限制在角度中过滤是否会阻止在 ng 重复中加载其他项目
- 使用 jquery 在我的网站中加载其他网页不起作用
- 如果当前图像加载缓慢,如何加载其他图像
- 如何使 ajax 加载页面中的链接加载其他页面
- 使用 AJAX 加载其他页面时加载 GIF 图像
- 在加载其他脚本之前,在 Jasmine 中加载外部脚本
- jQuery .click .appendTo 不加载其他 javascript
- Angular 在加载其他视图之前不显示视图
- 加载初始文件后无法加载其他文件
- 如何在每次单击链接以加载新页面时停止加载其他资产
- JavaScript 加载其他脚本 - 调用函数 - 未定义
- 在加载其他任何内容之前检查用户是否已登录
- RequireJS - 先初始化一个依赖模块,然后再加载其他模块
- 如何在应用程序模板中先加载 Ember 组件,然后再加载其他所有内容
- 在加载其他Javascript库的页面上嵌入Javascript
- 如何创建像StumbleUpon这样的工具栏来加载其他页面
- JS/jQuery mailto AND加载其他站点
- SoundJS如何/可以加载其他预加载程序加载的声音文件(如Pixi.Loader.Loader())
- 我的网站正在加载其他网站,导致它重定向到它