在下面的选项A的示例中,当回显帖子数据时,PHP脚本发布结果为undefined
。但与console.log
同时显示:[Object { set_capture="resize", set_unknown="unknown"}]
。我想知道选项A中的.map
函数或ajax
代码有什么问题?对于选项B,删除.map
函数后它可以正常工作。我错过了什么?
HTML表格:
<form action="myphp.php" method="post" name="form-foo">
<input type="radio" id="r1" class="set-img" name="set_capture" value="resize" />
<input type="radio" id="r2" class="set-img" name="set_capture" value="original" />
<input type="checkbox" id="r3" class="set-img" name="set_unknown" value="unknown" />
<input type="submit" id="submit" name="submit" value="Save" />
</form>
选项A:
$(function() {
$("#submit").on("click", function() {
var radioValues = $('#form-foo').map(function() {
return {
set_capture: $('input[name="set_capture"]:checked').val(),
set_unknown: $('input[name="set_unknown"]:checked').val()
};
}).get();
console.log(radioValues);
//var formData = JSON.stringify(radioValues);
var formData = radioValues;
var formURL = $("#form-foo").attr("action");
console.log(formData);
$.ajax({
url: formURL,
type: "POST",
data: formData,
cache: false,
dataType: "json"
}).done(function(data) {
// more codes
}, "json");
return false;
});
});
选项B:
$(function() {
$("#submit").on("click", function() {
var capture = $('input[name="set_capture"]:checked').val();
var unknown = $('input[name="set_unknown"]:checked').val();
var formData = {
set_capture: capture,
set_unknown: unknown
};
var formURL = $("#form-foo").attr("action");
console.log(formData);
$.ajax({
url: formURL,
type: "POST",
data: formData,
cache: false,
dataType: "json"
}).done(function(data) {
// more codes
}, "json");
return false;
});
});
答案 0 :(得分:1)
.map
总是以数组形式返回.Ajax数据格式是对象{}
因此它将在POST中未定义。要解决此问题,您需要添加formdata
$.ajax({
url: formURL,
type: "POST",
data: formData[0], //here add index 0
cache: false,
dataType: "json"
}).done(function(data) {
// more codes
}, "json");
return false;
});
注意:数据永远不会将未定义的值传递给服务器帖子,因此如果您没有检查输入或复选框,它将不会发布任何内容......
答案 1 :(得分:0)
Ajax data
必须是数组。 EX:{&#34;捕获&#34;:123,&#34; unknow&#34;:456}。
使用选项A :formData
是[对象]而非数组,因此无效。
据我所知,抱歉,如果错了!