$(document).ready(function(){
$("#btnc").click(function(){
$.post("php/snova_campanha.php", {campanha : $("#campanha").val() },
function(data){
if(data == "1" )
{
alert(data);
}
else
alert(data);
});
});
});
php只有:
<?php
echo 0;
return;
?>
HTML:
<div id="corpo" align="center">
<br/><br/>
<h1 align="center" style="color:#F8F8F8">Nova Campanha</h1>
<br/><br/><br/>
<form id="novacamp">
<label style="color:#F8F8F8" for="campanha">Nome</label>
<input align="middle" size="35" type="text" name="campanha" id="campanha"/>
<br/>
<input type="submit" id="btnc" value="OK"/>
</form>
</div>
我使用这个php只是为了测试,我将实现插入数据库,并返回1成功或0。
好吧,我有两页,另一页工作正常:
工作登录页面:
$(document).ready(function(){
$("#login").click(function(){
$("#login").attr("disabled", "disabled");
$.post("php/slogin.php", {usuario : $("#usuario").val(), senha : $("#senha").val()},
function(data){
if(data != "1" && data != "0")
{
alert(data);
$("#login").removeAttr("disabled");
}
else
window.location = "principal.php";
});
});
});
HTML
<div id="bar">
<div id="container">
<!-- Login Starts Here -->
<div id="loginContainer">
<img id="logoNetradio" src="../images/logonetradio3.png"/>
<br/><br/><br/>
<form id="formLogin">
<label for="usuario">Usuário</label>
<input align="middle" size="35" type="text" name="usuario" id="usuario"/>
<br/><br/>
<label for="senha">Senha</label>
<input align="middle" size="35" type="password" name="senha" id="senha" />
<br/>
<input type="submit" id="login" value="Login"/>
</form>
</div>
<!-- Login Ends Here -->
</div>
</div>
我没有看到任何差异......... 当我运行非工作代码时,我的浏览器上的地址变为www.myaddress.com/current_page.php?campanha=value_on_textfield 似乎$ .post正在当前页面上发出GET请求...... 这两个代码都适用于IExplore 并且工作页面适用于chrome和IE但不适用于firefox .... 有什么想法吗?
答案 0 :(得分:1)
实际上,return false
在jQuery事件处理程序中有一些副作用,大多数人都不知道。如果您只想阻止表单提交,那么您应该使用event.preventDefault()
。
为了让您的生活更轻松,我建议您更改PHP文件以返回json,如下所示:
<?php
echo "{'status':'0'}";
?>
然后在执行帖子时指定'json':
$(document).ready(function(){
$("#btnc").click(function(evt){
$.post(
"php/snova_campanha.php",
{campanha : $("#campanha").val() },
function(data){
alert(data.status);
},
"json"
);
// Keep the form from submitting
evt.preventDefault();
});
});
另外,我建议调查malsup's excellent jQuery form plugin,它会照顾你在这里尝试做的大部分事情。
最后,您可以尝试使用完整的$.ajax
来代替$.post
:
$('#btnc').click(function(evt) {
$.ajax({
method: 'POST',
url: 'php/snova_campanha.php',
data: {
campanha: $('#campanha').val()
},
dataType: 'json',
success: function(data, status) {
alert(data);
},
error: function(jqXHR, status, err) {
alert('ERROR');
alert(String(err));
}
});
evt.preventDefault();
});
可能发生的事情是$.post
调用正在抛出错误。如上所述使用$.ajax
可以捕获该错误。
答案 1 :(得分:0)
如果目的是不允许按钮发布表单,则按钮的click
事件应返回false
。