jquery$.post在某些浏览器中不起作用
php只有:jquery$.post在某些浏览器中不起作用,jquery,post,Jquery,Post,php只有: $(document).ready(function(){ $("#btnc").click(function(){ $.post("php/snova_campanha.php", {campanha : $("#campanha").val() }, function(data){ if(data == "1" ) {
$(document).ready(function(){
$("#btnc").click(function(){
$.post("php/snova_campanha.php", {campanha : $("#campanha").val() },
function(data){
if(data == "1" )
{
alert(data);
}
else
alert(data);
});
});
});
HTML
乌苏瓦里奥
森哈
我看不出有什么不同。。。。。。。。。
当我运行非工作代码时,浏览器上的地址会更改为www.myaddress.com/current_page.php?campanha=value_on_textfield
似乎$.post正在当前页面上发出GET请求。。。
这两种代码都适用于IExplore
工作页面可以在chrome和IE上使用,但不能在firefox上使用。。。。
有什么想法吗?如果目的是不允许按钮发布表单,那么按钮的
单击事件应该返回false
。实际上,返回false
在jQuery事件处理程序中有一些副作用,大多数人都没有意识到。如果您只想阻止表单提交,那么应该使用event.preventDefault()
为了让您的生活更轻松,我建议您将PHP文件更改为返回json,如下所示:
<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>
此外,我还建议您调查一下,这会考虑到您在这里要做的大部分事情
最后,您可以尝试使用完整的$.ajax
调用,而不是$。post
:
$(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();
});
});
可能发生的情况是,$.post
调用抛出了一个错误。如上所述使用$.ajax
将允许您捕获该错误。您使用的是什么版本的jQuery?此外,为了测试.post()是否实际不起作用,您应该发出警报(数据类型);作为回调函数的第一行。如果您有firebug,可能值得使用console.log而不是alert。如果我在回调方法中添加任何警报(任何东西),它都不会显示。切换禁用属性的正确方法是调用$(“#login”).prop(“disabled”,true);--布尔属性现在应该使用.prop(),如jquery 1.6.1变更日志中所述。我刚刚打开firebug,看到来自php的请求和响应都很好…….没有被调用的回调函数我希望按钮执行post请求。。。我试图在点击事件中添加“return false”,但没有work@fredcrs您确定返回是回调的最后一行吗?Return将在超过该点时停止该函数的执行。@fredcrs不,我想你不明白。该按钮将运行您启动的$.post命令,但整个过程都在一个表单中,该表单将发布表单本身。我的答案是错的。。。我忘记了这一点,因为我在启动ajax命令时不使用input[type=submit]。Bryan Ross使用event.preventDefault()来阻止表单本身被提交是正确的。好的,我明白了。请求做得很好,在firebug中,我收到了PHP的答案,现在是JSON,就像Bryan Ross告诉我的那样…但是回调函数仍然没有被调用…它不再执行GET,但是帖子仍然没有做postgreat插件,我现在就试试我更改了代码,打开firebug并看到请求和回复正在工作,但没有调用回调函数
$(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";
});
});
});
<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>
<?php
echo "{'status':'0'}";
?>
$(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();
});
});
$('#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();
});