繁体   English   中英

AJAX + PHP表单不传递变量?

[英]AJAX + PHP Form not passing variables?

因此,通常我可以使我的ajax正常工作,但是由于某些原因,我的脚本无法将变量传递给PHP表单。 我已经尝试调试了一段时间,希望有新的眼睛可以指出我遇到的任何愚蠢的错误(为简单起见,我将其剥离到裸露的骨头上,这不会传递变量)。

AJAX +表格

$('#formid').on('submit', function(e){
   e.preventDefault(); 
   $.ajax({ 
      type: "POST",        
      url: 'page.php', 
      data: $(this).serialize(),
      success: function(data) {
        alert(data);
      }
   });
});


 <form id="formid" method="post">
   <input type="text" name="name">
   <input type="submit" value="Add">
 </form>

page.php文件

//Get Variables
$name = $_POST['name'];

echo 'Name is: '.$name;

这应该显示一个警告,上面写着“名称是(无论用户在表单中输入什么)”
但是,它不会回显用户在表单中提交的内容。 有人能看到这个脚本有问题吗?

将数据发布回php页面data: $(this).serialize()出错data: $(this).serialize()

代码看起来很干净,但是在ajax函数中执行$(this).serialize()时,上下文可能会出现问题。 最好先将数据保存到变量中。 结果看起来像这样:

$('#formid').on('submit', function(e){
    e.preventDefault();
    var my_data = $(this).serialize();
    $.ajax({ 
      type: "POST",        
      url: 'page.php', 
      data: my_data,
      success: function(data) {
        alert(data);
      }
    });
});

如果这不起作用,那么实际上可能是PHP方面的问题。

编辑:添加了JS的其余部分,使其更加简洁明了。

您应该将表单方法设置为POST:

<form id="formid" method="post">

您的代码似乎没问题。 $(this).serialize()应该不是问题,但如果您这样认为,则可以给文本输入一个id并尝试data: {name: $('#your-input-id-here').val()}

另一件事可能是e.preventDefault(); 可能无法正常工作。 尝试将其放置在ajax调用之后,或将其替换为return false; 在ajax调用之后。

谢谢您的所有答复,我不知道为什么,但是在id前面添加表格使其生效。 $('form#formid')我的页面上必须有重复的ID,而没有意识到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM