[英]Retrieve post data with ajax
我试图通过ajax将值itest发送到myfile.php,但是$ _POST ['itest']; 没有检索任何数据。
的html:
<form name=test>
<input name=itest>
<button>Send</button>
</form>
js:
$(document).ready(function() {
$("form[name='test']").submit(function(e) {
e.preventDefault();
var itest = $("input[name=itest]").val();
$.ajax({
type:'POST',
url:'myfile.php',
data:itest
});
});
});
myfile.php
<?php
echo $_POST['itest'];
/* no data on $_POST['itest']; !!! why ? */
?>
需要微调! 救命 !
您没有将过帐数据作为对象发送。
data
参数必须是一个对象。 您只传递一个值。
jQuery.ajax状态:
数据类型:PlainObject或String要发送到服务器的数据。 如果还不是字符串,则将其转换为查询字符串。 它被附加到GET请求的URL上。 请参阅processData选项以防止这种自动处理。 对象必须是键/值对 。 如果value是一个Array,则jQuery会根据传统设置(如下所述)的值,使用相同的键序列化多个值。
您需要用对象替换itest
。
var itest = $("input[name=itest]").val();
$.ajax({
type:'POST',
url:'myfile.php',
data: {'itest' : itest}
});
如果我们打算以通常的方式发布表单中的所有值,则可以通过使用一些jQuery $(this).serializeArray()
替换笨拙的对象常量来改进先前的代码。 $(this)
引用表单, serializeArray()创建一个JavaScript对象数组,准备由jQuery.ajax使用 。
$(document).ready(function () {
$("form[name='test']").submit(function (e) {
e.preventDefault();
// This line added intentionally to show the data/data format used
console.log(JSON.stringify($(this).serializeArray()));
$.ajax({
type: 'POST',
url: 'myfile.php',
data: $(this).serializeArray()
});
});
});
问题是,您的数据参数错误。 您需要发送一个application/x-www-form-urlencoded
字符串(例如a=1&b=2
)或一个对象常量,例如{a: 1, b: 2}
。 您正在发送一个字符串值。
试试这个
var formData = $(this).serialize();
$.post('myfile.php', formData);
并将您的按钮设为提交类型
<button type="submit">Send</button>
我什至会努力使您的JS更加便携
<form action="myfile.php" method="post" id="test">
<input name="itest">
<button type="submit">Send</button>
</form>
和JS
$('#test').on('submit', function(e) {
e.preventDefault();
$.post(this.action, $(this).serialize());
});
$(document).ready(function() {
$("form[name='test']").submit(function(e) {
e.preventDefault();
var itest = {'itest' : $("input[name=itest]").val()};
$.ajax({
type:'POST',
url:'myfile.php',
data:itest
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.