我正在尝试通过ajax将值迭代发送到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 ? */
?>
需要微小的调整!帮助!
答案 0 :(得分:2)
您不是将帖子数据作为对象发送。
data
参数需要是一个对象。您只传递一个值。
数据 键入:PlainObject或String 要发送到服务器的数据。如果不是字符串,它将转换为查询字符串。它附加到GET请求的URL。请参阅processData选项以防止此自动处理。 对象必须是键/值对。如果value是一个数组,jQuery会根据传统设置的值使用相同的键序列化多个值(如下所述)。
您需要将itest
替换为对象。
var itest = $("input[name=itest]").val();
$.ajax({
type:'POST',
url:'myfile.php',
data: {'itest' : itest}
});
如果我们打算在表单中POST所有值,我们通常该怎么做,我们可以通过用一些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()
});
});
});
答案 1 :(得分:1)
问题是,您的数据参数错误。您需要发送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());
});
答案 2 :(得分:0)
$(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
});
});
});