未定义的 ajax post with for 循环和字符串选择器
Undefined ajax post with for cycle and string selectors
这是我的jquery/ajax菜鸟:)
我想出了这个:
$(function() {
$("#moreAdd").click(function() {
var dataString = [];
var selector = '#repeat0';
var row;
for(var i=0;$(selector).length != 0;i++){
row = [];
selector = '#repeat' + i;
row.push($(selector).val());
selector = '#distance' + i;
row.push($(selector).val());
selector = '#style' + i;
row.push($(selector).val());
selector = '#change' + i;
row.push($(selector).val());
selector = '#time' + i;
row.push($(selector).val());
dataString.push(row);
selector = '#repeat' + (i+1); //to check it's finished the for
}
$.ajax({
type: "POST",
url: "/index.php/trainings/showAdd",
data: dataString,
dataType: 'json',
success: function(data) {
$("div#addModalBody").html(data.html);
}
});
return false;
});
});
但我总是以一个空帖子结束。我认为选择器的东西无法正常工作,我可以创建一个字符串,然后使用该字符串按 id 选择吗?如果不是这样,如果有人能告诉我我错在哪里......
谢谢詹姆斯
我可以创建一个字符串,然后使用该字符串按 ID 选择吗?
是的,这样做没有错。选择器只是一个字符串,如果需要,您可以动态构建它。
但我总是以一个空帖子告终
我猜你的意思是发送到showAdd
的数据是空的。这是因为您构建的数据是错误的。
从文档中
你对象(传递给数据(必须是键/值对。
不这样做,你建立字符串数组(var dataString = [];
(并将其转储到数据中(data: dataString
(。数组不是键值对。这是一个键值对 {key:value, key:value}
所以你的数组就是你的值,你的键在哪里?
因此,如果您的方法需要参数(x)
并且您想发送y
.您应该这样做:
$.ajax({
type: "POST",
url: "/index.php/trainings/showAdd",
data: {x:y},
dataType: 'json',
success: function(data) {
$("div#addModalBody").html(data.html);
}
});
我不做PHP,所以我不确定服务器端应该是什么样子,并且您没有添加应发送到服务器代码的预期参数。
在这种情况下,您应该使用 class
,
<input type="text" id="repeat0" class="repeat" />
<input type="text" id="repeat1" class="repeat" />
<!-- apply class on elements for distance,style,change,time,etc.-->
你的代码会像,
var dataString = [];
$('.repeat').each(function(index,value){
obj={};
obj['repeat']=$(this).val();// repeat value
obj['distance']= $('.distance:eq('+index+')').val();// let distance class for all distance values
obj['style']= $('.style:eq('+index+')').val();// let distance class for all distance values
obj['change']= $('.change:eq('+index+')').val();// let style class for all distance values
obj['time']= $('.time:eq('+index+')').val();// let time class for all distance values
dataString.push(obj); // add data to final array
});
// your ajax code here
相关文章:
- 如何将angularjs中的javascript字符串输出为循环数组
- Javascript:用while循环在给定的count参数中重复一个字符串
- 在不使用循环的情况下,从一个数据库字符串值向javascript数组添加多个对象
- 使用val()在jquery循环中设置html字符串的val
- 使用部分字符串在数组中循环
- 循环选择标记并创建数组或字符串
- 如何在JavaScript中移除在循环中连接字符串时添加的额外字符
- 如何无限循环数据集字符串
- 如何将密钥与 JQuery $.each 循环中的字符串进行比较
- Javascript / JQuery循环访问已发布的ajax数据字符串以为其分配新值
- JQuery:如何在循环 dom 元素时正确缩进字符串
- 用于循环和匹配字符串的 JavaScript
- 使用 jQuery 将 HTML 文本抓取到 JSON 中,但由于循环引用而无法字符串化
- 有人能用for循环和splice命令帮助编辑Javascript字符串吗
- 使用While循环添加到字符串
- js-循环遍历数据库中的切片字符串和检查项
- 循环字符串以查找字符集之间的文本
- javascript:循环字符串和性能
- AngularJs-循环字符串的保持值,以便在其他地方使用
- Javascript循环字符串比较头痛