反序列化响应

时间:2014-02-20 08:49:59

标签: php ajax arrays

我尝试发布一个来自的数据我在我的html上有这个代码。

<javascript>
$(document).ready(function(){
$("#btnsubmit").click(function(e){
    e.preventDefault();
    var testData = $("#test").serialize();
    $.ajax({
        type: "POST",
        url: "ajaxSurvey.php",             
        data: {survey:testData}          
    });
});
})
</javascript>

和我的表格

<form id="test" name="test" method="POST">
  <input name="surveyperiod" id="surveyperiod" type="date">
  <input name="deadline" id="deadline" type="date"  >
  <input type="submit" id="btnsubmit"name="btnsubmit" value="   Update    ">
</form>

和我的php页面

if(isset($_POST['survey']){
    $myDate = $_POST['survey'];

    mysql_query('INSERT INTO (surveyperiod,deadline) VALUES (????????)');

}

现在我如何反序列化$ myDate,如下所示

  

surveyperiod = 2014年2月25日&安培;截止时间= 2014年2月18日

2 个答案:

答案 0 :(得分:0)

你不需要反序列化,你可以通过放置隐藏字段以不同的方式做到这一点;

<强> HTML:

<form id="test" name="test" method="POST">
  <input name="survey" type="hidden" value="true"/>
  <input name="surveyperiod" id="surveyperiod" type="date">
  <input name="deadline" id="deadline" type="date"  >
  <input type="submit" id="btnsubmit"name="btnsubmit" value="   Update    ">
</form>

<强> PHP:

if(isset($_POST['survey']){
    $myDate = $_POST['survey'];

    mysql_query('INSERT INTO (surveyperiod,deadline) VALUES ($_POST["surveyperiod"], $_POST["deadline"])');

}

<强> JS:

<javascript>
$(document).ready(function(){
$("#btnsubmit").click(function(e){
    e.preventDefault();
    var testData = $("#test").serialize();
    $.ajax({
        type: "POST",
        url: "ajaxSurvey.php",             
        data: testData          
    });
});
})
</javascript>

通过这样做,您不需要发布{survey:testData}之类的数据。只需添加,

<input name="survey" type="hidden" value="true"/>

html并检查php端的隐藏字段。如果存在名称为survey的字段,请运行您的代码

答案 1 :(得分:0)

棘手的方法是使用parse_str()

// Access as Variable
if( isset($_POST['survey']) ){

    // surveyperiod=2014-02-25&deadline=2014-02-18
    parse_str($_POST['survey']);

    $S_Period = $surveyperiod;
    $S_Deadline = $deadline;

   // do whatever you want
   mysql_query('INSERT INTO (surveyperiod,deadline) VALUES ( "'.$S_Period.'", "'.$S_Deadline.'" )');

}

说明:

在您的Ajax请求中,您通过POST方法(data: {survey:testData})发送数据,并分配了一个survey的POST变量,此POST变量包含您指定的数据字符串surveyperiod=2014-02-25&deadline=2014-02-18你的javascript testData。现在我们要做的是,现在我们必须将字符串解析为变量,而parse_str()内置函数则为您完成。就是这样:)