2014-09-10 54 views
0

我已經創建了一個textarea &我想發送我的textarea與ajax值到數據庫,但它發送到數據庫沒有任何價值和重新加載,我的地方是我的問題? HTML代碼:我textarea發送空值與阿賈克斯我的PHP代碼

<form> 

    <textarea></textarea> 

    <button type="submit">ارسال</button> 

</form> 

AJAX代碼:

$(document).ready(function(e){ 

    var text=$('textarea').val(); 

    $('button').click(function(e){ 

     $('.loading').css('display','block'); 

     $.ajax({ 

      url:'insertText.php', 
      type:'POST', 
      data:{'text':text}, 
      beforeSend : function(){ 

       $('.loading').html('فرستادن ...'); 

      }, 
      error : function(request) { 

       alert(request); 

      },   
      success:function(data){ 

       alert(data); 

      } 

     }); 

    }); 

}); 

,這是我的信息PDO和MVC,我把最後一層:

$obj=new Get; 
$obj->InsertText($_POST['text']); 

回答

1

將行var text=$('textarea').val();點擊事件中否則它只會在dom準備好時取得初始值。

$(document).ready(function(e) { 
    $('button').click(function(e) { 
     var text = $('textarea').val(); 
     $('.loading').css('display', 'block'); 
     $.ajax({ 
      url: 'insertText.php', 
      type: 'POST', 
      data: { 
       'text': text 
      }, 
      beforeSend: function() { 

       $('.loading').html('فرستادن ...'); 

      }, 
      error: function(request) { 
       alert(request); 
      }, 
      success: function(data) { 
       alert(data); 

      } 

     }); 
    }); 
}); 
0

你有兩個問題:

  1. 你是在錯誤的時間獲得來自textarea的價值
  2. 您提交表單

你行代碼:

var text=$('textarea').val(); 

處理器內部是ready處理器,但外部處理器click。這意味着您可以在DOM準備時獲得處的值,而不是單擊該按鈕時的值。

將它移到點擊處理程序中。


要停止提交表單,你需要告訴瀏覽器不要對點擊提交按鈕進行默認操作:

$('button').click(function(e){ 
    e.preventDefault(); 

需要注意的是,在一般情況下,最好是對提交的表單作出反應,而不是單擊某個特定的提交按鈕:

$('form').submit(function(e){ 
    e.preventDefault(); 

這也是pref犯錯,當JavaScript的失敗(無論何種原因)的形式應該仍然工作:

<form action="insertText.php" method="POST"> 

<textarea name="text">