我的textarea使用ajax为我的PHP代码发送空值

时间:2014-09-10 09:32:07

标签: php jquery html ajax pdo

我创建了一个textarea&我想将带有ajax的textarea的值发送到数据库,但是它将它发送到数据库而没有任何值并且重新加载,我的问题在哪里? HTML代码:

<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']);

2 个答案:

答案 0 :(得分:1)

将行var text=$('textarea').val();放在按钮的click事件中,否则只在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);

            }

        });
    });
});

答案 1 :(得分:0)

你有两个问题:

  1. 您在错误的时间从textarea获取值
  2. 您正在提交表单

  3. 您的代码行:

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

    ready处理程序内但外面click处理程序。这意味着您可以在时间内获取DOM准备好,而不是在单击按钮时获取值。

    将其移动到点击处理程序中。


    要停止表单提交,您需要告诉浏览器不要执行单击提交按钮的默认操作:

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

    请注意,通常情况下,最好对提交的表单做出反应,而不是单击特定的提交按钮:

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

    当JavaScript失败时(无论出于何种原因),表格仍然可以工作:

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

    <textarea name="text">