我的文本区域使用ajax为我的PHP代码发送空值


My textarea sends empty values with ajax for my PHP codes

我创建了一个文本区域&我想用ajax将我的文本区域的值发送到数据库,但它将其发送到数据库时没有任何值,而且需要重新加载,我的问题在哪里?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']);

将行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);
            }
        });
    });
});

您有两个问题:

  1. 您在错误的时间从文本区域获取值
  2. 您正在提交表单

您的代码行:

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