2013-08-25 145 views
1

我正在創建一個聊天系統。我通過jQuery中的ajax方法發送表單數據。我的第一個問題是ajax方法不是將數據發送到proccess.php,而是頁面重定向到它自己。Ajax POST表單數據作爲GET請求發送

<div id="chatOutput"></div> 
<form id="myform"> 
    <textarea id="chatInput" name="chatInput"></textarea> 
    <input type="submit" id="send" name="send" value="send" /> 
</form> 

和腳本是:

$('#send').click(function() { 
    $('#myform').submit(); 
    $.ajax({ 
     url: 'process.php', 
     type: 'post', 
     dataType: 'json', 
     data: $('#myform').serialize(), 
     success: function() { 
      alert("Submitted!"); // for testing 
     } 
    }); 
    return false; 
}); 

,但劇本不工作和頁面去刷新,我看到像get方法在地址欄的變量和它的值。

如果要解決這個問題,process.php會創建一個chat.txt並將#chatInput中的數據添加到它中。然後將chat.txt的數據添加到#chatOutput。

附加數據後,div#chatOutput的大小發生變化。我想固定/指定此div的寬度和高度。修正大小後,如何滾動到底部看最後一次聊天?

回答

0

編輯 您有語法錯誤。確保你有e.preventDefault();作爲您的事件點擊功能中的第一件事。然後,即使稍後發生錯誤,也會阻止默認操作。

$('#send').click(function(e) { 
    e.preventDefault(); //disable default action 

    $('#myform').submit(); 
     $.ajax({ 
      url: 'process.php', 
      type: 'post', 
      dataType: 'json', 
      data: $('#myform').serialize(), 
      success: function() { 
       alert("Submitted!"); // for testing 
      } 
     }); 
    }); 

    return false; //return something 
}); 
+0

一旦默認操作被阻止,那麼爲什麼再次提交表單,因爲請求是ajax .. –

+0

因爲默認操作是同步提交,那意味着重新加載頁面。你首先防止發生,然後提交異步。 –

0

你可以這樣做:

$('#myform').submit(function() { 
    $.ajax({ 
     url: 'process.php', 
     type: 'post', 
     dataType: 'json', 
     data: $('#myform').serialize(), 
     success: function() { 
      alert("Submitted!"); // for testing 
     } 
    }); 
    return false; 
}); 

您使用$('#myform').submit();剛剛提交表單以正常的方式,從而忽略後的AJAX等。

此外,將此代碼放在後的形式本身或在$(function(){ ... });

+0

現在頁面不會刷新。但ajax方法仍然不起作用 – MKG

+0

所以你想AJAX來處理提交,但仍然刷新頁面?您可能還需要在'$(function(){..})中包含代碼;' – putvande

+0

什麼也沒有發生。但頁面刷新解決了 – MKG

0

的問題是在這裏:

$('#myform').submit(); 

的模擬「提交」按鈕單擊事件

0

刪除行:

$('#myform').submit(); 

它在您之前提交表格r阿賈克斯呼叫。

相關問題