2011-11-10 21 views
0
$(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:使用這個PHP只是爲了測試

<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> 

IM,我將實現插入到數據庫,並返回1成功或0.

那麼,我有兩個頁面,另一個工作正常:

WORKING登錄頁面:

$(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但不是火狐.... 任何想法?

+0

您使用的是什麼版本的jQuery? – WhiskeyTangoFoxtrot

+0

jquery-1.6.4.js – fredcrs

+1

此外,要測試.post()是否實際上不起作用,應該放置一個警報(typeof數據);作爲回調函數的第一行。如果你有螢火蟲,可能值得使用console.log而不是alert。 – WhiskeyTangoFoxtrot

回答

1

事實上,return false在jQuery事件處理程序中有一些副作用,大多數人都不知道。如果您只想阻止表單提交,那麼您應該使用event.preventDefault()

爲了使您的生活更輕鬆,我建議你改變你的PHP文件來返回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(); 
    }); 
}); 

另外:

<?php 
echo "{'status':'0'}"; 
?> 

然後實施後,當指定 'JSON' ,我會建議您查看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將允許您捕獲該錯誤。

+0

它不再執行GET,但該職位仍然沒有做的職位 – fredcrs

+0

偉大的插件,我會嘗試它剛剛 – fredcrs

+0

我改變了代碼,打開螢火蟲,看到請求和答覆工作,但回調funcrion不being beeing叫 – fredcrs

0

如果意圖是不允許按鈕發佈表單,則該按鈕的click事件應返回false

+0

我希望按鈕可以完成發佈請求...我嘗試在點擊事件中添加「返回false」,但它無效 – fredcrs

+0

@fredcrs你確定回報是回調的最後一行嗎?返回將停止執行該功能。 – WhiskeyTangoFoxtrot

+0

@fredcrs不,我不認爲你明白。該按鈕將運行您啓動的$ .post命令,但整個事情都在張貼表單本身的表單中。而我的回答是錯誤的......我忘記了,因爲我在啓動ajax命令時沒有使用input [type = submit]。 Bryan Ross正確地使用event.preventDefault()來阻止表單本身被提交。 –

相關問題