Javascript 在使用js/jquery提交ajax表单之前需要创建array/json
我在表单提交后创建json时面临问题-我想将json发送到ajax调用-下面是必需的jsonJavascript 在使用js/jquery提交ajax表单之前需要创建array/json,javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,我在表单提交后创建json时面临问题-我想将json发送到ajax调用-下面是必需的json { "person": { "firstName": "amr", "middleName": "m", "lastName": "k", "emailId": "amr1@s.in", "mobileNumber": "454564333", "mobileCountryCode": "+91" }, "informationSource": [
{
"person": {
"firstName": "amr",
"middleName": "m",
"lastName": "k",
"emailId": "amr1@s.in",
"mobileNumber": "454564333",
"mobileCountryCode": "+91"
},
"informationSource": [
{"id": "1"}, {"id": "2"}
],
"loginPassword": "password"
}
以上所有字段都是表单-我想使用ajax提交表单,下面是代码-
var数组_data=[];
var密码={
登录密码:$('#密码').val()
};
个人变量={
firstName:$('#first_name').val(),
middleName:$('#middle_name').val(),
lastName:$('#last_name').val(),
emailId:$('#email').val(),
mobileNumber:$('mobile#u no').val(),
mobileCountryCode:$(“#国家代码”).val()
};
var informationSource=[];
$.each($(“#听到选项:选中”),函数(){
informationSource.push({
id:$(this.text())
});
});
数组_data.push({
信息源:信息源
});
数组_data.push({
密码
});
数组_data.push({
人:人
});
console.log(数组_数据);
$.ajax({
url:“api.php”,
类型:“POST”,
//数据类型:“json”,
数据:数组_数据,
发送前:功能(xhr、设置){
xhr.setRequestHeader('授权','承载'+acc_令牌);
},
成功:功能(响应){
$('#res div').css(“display:block;”);
$('#signup div').css(“display:none;”);
}
});
但是这段代码不起作用,这在推送数组时给了我未定义的信息-请帮助创建通过ajax发送所需的json/数组。Replace
array_data.push({informationSource: informationSource});
array_data.push({password});
array_data.push({person: person});
与:
var object ={
person,
informationSource,
loginPassword: $('#password').val()
}
array_data.push(object);
查看HTML会很有帮助,但是您的主要问题是将多个对象推送到一个数组中,而不是将包含属性的对象推送到目标数据结构中。您还可以使用
map()
稍微简化代码。试试这个:
var obj={
人:{
firstName:$('#first_name').val(),
middleName:$('#middle_name').val(),
lastName:$('#last_name').val(),
emailId:$('#email').val(),
mobileNumber:$('mobile#u no').val(),
mobileCountryCode:$(“#国家代码”).val()
},
信息源:$(“#听到选项:选中”).map(函数(){
返回{
id:$(this.text())
};
}).get(),
登录密码:$('#密码').val()
};
$.ajax({
url:“api.php”,
类型:“POST”,
资料来源:obj,
发送前:功能(xhr、设置){
xhr.setRequestHeader('授权','承载'+acc_令牌);
},
成功:功能(响应){
$('#res div').show();
$('#注册div').hide();
}
});
这里的问题是,当jQuery/Ajax/data需要一个对象时,您正在发送一个数组。
请尝试以下操作,而不是发送数组:
const array_data = {
informationSource,
password,
person
};
这应该可以解决您的问题。据我所知,您需要发送一个: 您正在尝试发送以下对象之一:
[
{
"person": {
"firstName": "amr",
"middleName": "m",
"lastName": "k",
"emailId": "amr1@s.in",
"mobileNumber": "454564333",
"mobileCountryCode": "+91"
}
},
{
"informationSource": [
{"id": "1"}, {"id": "2"}
],
},
{
"loginPassword": "password"
}
]
要解决问题,请在对象中设置属性,而不是使用:
var loginPassword: $('#password').val();
var person = {
firstName: $('#first_name').val(),
middleName: $('#middle_name').val(),
lastName: $('#last_name').val(),
emailId: $('#email').val(),
mobileNumber: $('#mobile_no').val(),
mobileCountryCode: $('#country_code').val()
};
var informationSource = [];
$.each($("#hear option:selected"), function() {
informationSource.push({ id: $(this).text() });
});
var data = {
person : person,
informationSource : informationSource,
loginPassword : loginPassword,
}
请显示控制台消息。为什么不使用
person=$(form).serialize()
?密码:密码与密码相同这就是我现在创建数据的方式,但是当我使用ajax发送数据时,这个数组给了我未定义的表单数据:未定义:但有一件事是我使用JSON.stringify[{“informationSource”:[{“id”:“paper”},{“id”:“Student”},{“id”:“Website”},“loginPassword:“987456”,“person:{”firstName:“asdd”,“middleName:“asd”,“lastName:“sddd”,“emailId:”amrish@mailinator.com“,”mobileNumber:“9874563210”,“mobileCountryCode:“1”}}]现在我想删除外部方括号[]其余一切都很好。我如何解决这个问题
var loginPassword: $('#password').val();
var person = {
firstName: $('#first_name').val(),
middleName: $('#middle_name').val(),
lastName: $('#last_name').val(),
emailId: $('#email').val(),
mobileNumber: $('#mobile_no').val(),
mobileCountryCode: $('#country_code').val()
};
var informationSource = [];
$.each($("#hear option:selected"), function() {
informationSource.push({ id: $(this).text() });
});
var data = {
person : person,
informationSource : informationSource,
loginPassword : loginPassword,
}