Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在使用js/jquery提交ajax表单之前需要创建array/json_Javascript_Php_Jquery_Json_Ajax - Fatal编程技术网

Javascript 在使用js/jquery提交ajax表单之前需要创建array/json

Javascript 在使用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": [

我在表单提交后创建json时面临问题-我想将json发送到ajax调用-下面是必需的json

{
"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,
}