Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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
JQuery字符串在PHP中解析不正确_Php_Jquery_String_Serialization - Fatal编程技术网

JQuery字符串在PHP中解析不正确

JQuery字符串在PHP中解析不正确,php,jquery,string,serialization,Php,Jquery,String,Serialization,在上一篇文章中,我询问了如何反序列化JQuery字符串,并被告知使用parse_str()。然而,直到后来我才发布我的代码。下面是我的JQuery字符串: age_gender=1&age_gender=2&age_gender=3&age_gender=4&age_gender=5&age_gender=6 下面是我的PHP代码: if(isset($_POST['age_gender'])) { $formSerialized = $_P

在上一篇文章中,我询问了如何反序列化JQuery字符串,并被告知使用parse_str()。然而,直到后来我才发布我的代码。下面是我的JQuery字符串:

age_gender=1&age_gender=2&age_gender=3&age_gender=4&age_gender=5&age_gender=6
下面是我的PHP代码:

if(isset($_POST['age_gender'])) { 
     $formSerialized = $_POST['age_gender'];
     $formData = array();
     parse_str($formSerialized, $formData);
     addRow($formData, $link); 
}

function addRow($dataArray, $link) {
     $age_group = $dataArray[0];
     $populations = array(intval($dataArray[1]) + intval($dataArray[2]), intval($dataArray[1]), intval($dataArray[2]));
     $percents = array(doubleval($dataArray[3]) + doubleval($dataArray[4]), doubleval($dataArray[3]), doubleval($dataArray[4]));
     $m_per_100_f = doubleval($dataArray[6]);
     $query = "INSERT INTO national_age_gender_demographics (age_group, both_pop, male_pop, female_pop, both_percent, male_percent, female_percent, males_per_100_females)
     VALUES ('$age_group','$populations[0]','$populations[1]','$populations[2]','$percents[0]','$percents[1]','$percents[2]','$m_per_100_f')";
     $result = mysqli_query($link,$query);

     if(!$result)  die( "Query: " . $query . "\nError:" . mysql_error() );
}

出于某种原因,我得到$age_组的一个空白字符串,所有其他值都是0。有人能帮我吗?

你可以尝试用Json编码,这是一个很好的解决方案

$.stringfy(您的_变量)


要使用php进行读取,请使用json_decode

尝试像这样传递数据:

age_gender[]=1&age_gender[]=2&age_gender[]=3&age_gender[]=4&age_gender[]=5&age_gender[]=6
请注意名称后的
“[]”
,如果它们来自html输入,您只需将html输入命名为
年龄\性别[]
。 然后,函数addRow应该如下所示:

    function addRow($dataArray, $link) {
     $dataArray = $dataArray['age_gender'];//Added this line
     $age_group = $dataArray[0];
     $populations = array(intval($dataArray[1]) + intval($dataArray[2]), intval($dataArray[1]), intval($dataArray[2]));
     $percents = array(doubleval($dataArray[3]) + doubleval($dataArray[4]), doubleval($dataArray[3]), doubleval($dataArray[4]));
     $m_per_100_f = doubleval($dataArray[6]);
     $query = "INSERT INTO national_age_gender_demographics (age_group, both_pop, male_pop, female_pop, both_percent, male_percent, female_percent, males_per_100_females)
     VALUES ('$age_group','$populations[0]','$populations[1]','$populations[2]','$percents[0]','$percents[1]','$percents[2]','$m_per_100_f')";
     $result = mysqli_query($link,$query);

     if(!$result)  die( "Query: " . $query . "\nError:" . mysql_error() );
}

age\u-gender接受了多少个值?为什么所有参数的名称都相同?我正要问相同的问题,age\u-gender被覆盖了,所以你只接受一个值。PHP希望
age\u-gender
age\u-gender[]
,因为它是一个数组。那么,我是否用
age\u-gender[]
替换
的两个实例,看起来JQuery给出了这个字符串:
age\u-gender%5B%5D=1&age\u-gender%5B%5D=2&age\u-gender%5B%5D=3&age\u-gender%5B%5D=4&age\u-gender%5B%5D=5&age\u-gender%5B%5D=6
为什么我的方括号被转义码取代了?哦,明白了,我必须保留以前的代码来反序列化JQuery字符串。