【问题标题】:JQuery string not parsing correctly in PHPjQuery 字符串在 PHP 中无法正确解析
【发布时间】:2013-04-25 18:36:58
【问题描述】:

在上一篇文章中,我询问了如何反序列化 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_group 的空白字符串,而所有其他值都为 0。有人可以帮我吗?

【问题讨论】:

  • age_gender 接收了多少值?
  • 为什么所有参数都同名
  • 我正要问同样的问题,age_gender 被覆盖了,所以你只需要一个值。
  • PHP 期望 age_genderage_gender[],因为它是一个数组。
  • 那么,我是否将age_gender 的两个实例都替换为age_gender[]

标签: php jquery string serialization


【解决方案1】:

尝试像这样传递数据:

age_gender[]=1&age_gender[]=2&age_gender[]=3&age_gender[]=4&age_gender[]=5&age_gender[]=6

注意名称后面的'[]',如果它们来自html 输入,您只需将html 输入命名为age_gender[]。 然后你的函数 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() );
}

【讨论】:

  • 好的,看起来 JQuery 给出了这个字符串:age_gender%5B%5D=1&age_gender%5B%5D=2&age_gender%5B%5D=3&age_gender%5B%5D=4&age_gender%5B%5D=5&age_gender%5B%5D=6 为什么我的方括号被转义码替换了?
  • 哦,明白了,我必须保留以前的代码来反序列化 JQuery 字符串。
【解决方案2】:

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

$.stringfy(your_var);

使用 json_decode 使用 php 读取

【讨论】:

    猜你喜欢
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多