我创建了一个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']);
答案 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)
你有两个问题:
您的代码行:
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">