jquery.serialize()之后如何处理php

jquery.serialize()之后如何处理php,php,jquery,forms,serialization,form-submit,Php,Jquery,Forms,Serialization,Form Submit,好吧,不知何故,我最难弄明白这一点,所以我想用一个表单调用ajax,并使用jquery用.serialize()对其进行序列化。发送到php的数据如下所示 key1=value&key2=value2&key3=value3 var formSubmit = $(this).serialize(); $.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit} 我正在使用post请求。它看起来很简单,但不知何

好吧,不知何故,我最难弄明白这一点,所以我想用一个表单调用ajax,并使用jquery用.serialize()对其进行序列化。发送到php的数据如下所示

key1=value&key2=value2&key3=value3
var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
我正在使用post请求。它看起来很简单,但不知何故,我很难弄清楚如何访问这些键/值对,我不能在上使用explode()&因为这会让我

[0] => key1=value1
[1] => key2=value2
[2] => key3=value3
var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
我不能在php中使用$\u POST['key1']或$\u GET['key1']来访问这些值。我该怎么办!!!谢谢

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
作为一个附带问题,我注意到。serilize()将换行符替换为%0A,将空格替换为+,如何用php解码这些值?再次感谢

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
编辑:

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
嘿,jquery代码是相当基本的:

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}

尝试在jQuery中使用json,然后在php中使用json_解码

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}

您的值存在于$\u POST数组的
formInfo
索引中

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
print_r( $_POST['formInfo'] );

echo $_POST['formInfo']['key1'];

如果您使用jQuery的Ajax功能提交表单数据,那么使用
.serialize()
应该不会有问题。服务器应自动查看并解码帖子内容

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
作为演示,请参见以下代码:

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
HTML

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
<form id="category-dynamic" class="dynamic">
   <fieldset id="inner-fieldset">
      <legend id="new-category">
        <label for="category-name">Category Name: </label>
        <input type="text" name="category-name" value="" />
      </legend>
      <ul id="category-fields">
         <li>
           <label>Field #1:</label><br />
           <input type="text" name="fields[]" value="" />
         </li>
         <li>
           <label>Field #2:</label><br />
           <input type="text" name="fields[]" value="" />
         </li>
      </ul>
   </fieldset>
</form>
<h3>POST Result</h3>
<pre></pre>
编辑

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
以及processor.php文件内容:

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
var formSubmit = $(this).serialize() + "&formSubmit=true";
$.post('ajax.php', formSubmit);
您将获得相同的效果,服务器将能够在无事故的情况下扩展POST变量

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
编辑3

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
请参见此示例:

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
其中代码为:

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
POST Result

category-name=&fields%5B%5D=&fields%5B%5D=&formSubmit=true

Array
(
    [category-name] => 
    [fields] => Array
        (
            [0] => 
            [1] => 
        )

    [formSubmit] => true
)
请注意,在串行数据中添加了
“&formSubmit=true”
。这将从PHP页面输出:

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
$(document).ready(function(){
    var serial = $('#category-dynamic').serialize();
    $('pre').html(serial);
    $.post("http://jfcoder.com/test/processor.php", {"formSubmit":"true","serial":serial}, function(data){
         $('pre').html($('pre').html()+"\n\n"+data);
    });
});
编辑4

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
这将使用您描述的方法。看到区别了吗

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}
POST Result

category-name=&fields%5B%5D=&fields%5B%5D=

Array
(
    [formSubmit] => true
    [serial] => category-name=&fields%5B%5D=&fields%5B%5D=
)
输出

var formSubmit = $(this).serialize();
$.post('ajax.php',{"formSubmit": "true", "formInfo": formSubmit}

如何将变量发送到PHP?发布该代码(您的AJAX代码)。您可以显示发送请求的javascript语句吗?例如,我为另一个页面创建了此代码。查看加载的内容:@Ben-将该代码添加到您的问题中。您不需要在php中解码任何内容,只需提供您的javascript代码,我相信您在序列化中遇到了一些问题,应该可以正常工作。JSON只是向服务器提交数据的另一种方式,它不应该“修复”这个问题。它会修复,正如结果一样,我们将在JS和PHP中使用单个对象。它只是发送数据的另一种方式。@Ben-请参阅编辑4了解您的使用与我的不同之处。我认为您是对的,我发送post变量的方式非常混乱,将其全部作为一个变量发送会使其更加平滑。成功了!!!非常感谢。我也刚刚知道。哇,你真的帮了我很多忙!再次感谢你,伙计。@Ben-没问题。您可能会阅读jQuery和,因为有一天您可能会需要它们。