我正在使用jQuery序列化表单,并将其值发布到URL中,该URL作为名称/值对存储在数据库中。但是,每个表单字段的名称和ID是动态生成的(例如 f4sgg-342 ),因此没有描述特定字段。我无法控制生成这些字段的系统。
但是有相应的标签,其中包含对特定表单字段的描述-它们还包含for =“ f4sgg-342 ”属性,允许我将标签链接到正确的字段。
我使用了常规的form.serialize()函数:
<script type="text/javascript">
$(document).ready(function() {
var form = $("#some-form");
$("#some-form").submit(function(e) {
$.ajax({
type: "POST",
url: 'https://example.com/post.php',
data: form.serialize(),
success: function(response) {
console.log(response);
$("#result").html(response);
},
error: function() {
alert('Error Submitting');
}
})
})
})
但是,当我将内容传递到url时,如何将表单字段名称替换为标签却一无所知。考虑使用jQueryUI的.labels()-但同样地-似乎无法“连接点”
有什么建议吗?谢谢!
答案 0 :(得分:1)
如何?假设您在(带有ID提交)表单的底部有一个按钮,该按钮附加到click事件:
$("#submit").click(function(){
var originalSerialized = $("#some-form").serialize();
console.log(originalSerialized);
var splitedString = originalSerialized.split("&");
console.log(splitedString);
var newString = "";
$.each(splitedString, function(i, element){
var strangeName = element.substr(0, element.indexOf('='));
if(newString == "")
newString = $("label[for='"+strangeName+"']").html() + element.substr(element.indexOf('='));
else
newString += "&" + $("label[for='"+strangeName+"']").html() + element.substr(element.indexOf('='));
})
console.log(newString);
//Here, you do the AJAX and the data is the newString variable
})