序列化的AJAX $ _POST不为空,但单个$ _REQUEST为空

时间:2014-01-24 13:16:36

标签: php jquery ajax post

我正在进行这样的AJAX调用:

$( "#submit_jobs_preview" ).click(function(e) {
    var postData = $('#new_job_form').serialize();
    var formURL = "ajax.xxx.php";

    $.ajax({
    type: 'POST',
    url: formURL,
    data: {submit_jobs_preview: postData },
    success: function(data){
        alert(data);
        }   
    });     
    e.preventDefault(); //STOP default actio
});

在php中我回音:

echo $_POST['submit_jobs_preview'];

这个$ _POST显示我在表单中正确放置的所有值,如下所示:

new_job_city=Berlin&new_job_name=Manager etc.

但是如果我想从这个$ _POST中获得一个$ _REQUEST:

 if($_POST['submit_jobs_preview']){
    echo $city = mysql_real_escape_string($_REQUEST['new_job_city']);
 }

警报为空。

为什么? :)

先谢谢!

更新

完整的数据返回:

XHR Loaded (autocomplete.php - 200 OK - 105.99994659423828ms - 354B) VM2106:3
new_job_city=Halle&new_job_job=Flugbegleiter&new_job_other_job=&job_zielgruppe=Auszubildende&new_job_phone=4921663965439&new_job_email=kleefeld%40dsc-medien.de&new_job_detailhead=F%C3%BCr+unser+zentrales+Marketing+mit+Sitz+in+der+Hauptverwaltung+in+der+City+von+D%C3%BCsseldorf+suchen+wir+zum+n%C3%A4chstm%C3%B6glichen+Termin+eine%2Fn&new_job_time=Vollzeit&teilzeit_std=&new_job_tasks=&new_job_profile=&new_job_advantage=&new_job_creatorId=1&new_job_creationDate=1390569795&new_job_scope=Airport+Service&new_job_niederlassung=7&new_job_active=0 

2 个答案:

答案 0 :(得分:0)

$ _ POST ['submit_jobs_preview']包含一个字符串而不包含任何其他内容,因此您无法以这种方式访问​​它。使用parse_str()反序列化$ _POST ['submit_jobs_preview']。这样你就可以访问它的属性了。

$_POST['submit_jobs_preview']['new_job_city']

答案 1 :(得分:0)

如果没有必要,您无需使用{submit_jobs_preview: postData }。我会再给你一个提示。使用以下ajax;

$( "#submit_jobs_preview" ).click(function(e) {
    var postData = $('#new_job_form').serialize();
    var formURL = "ajax.xxx.php";

    $.ajax({
    type: 'POST',
    url: formURL,
    data: postData,
    success: function(data){
        alert(data);
        }   
    });     
    e.preventDefault(); //STOP default actio
});

并在php方面;

if($_POST['new_job_city']){
    echo $city = mysql_real_escape_string($_REQUEST['new_job_city']);
}

在这种情况下,您可以直接使用字段名称。

另一个提示:

您可以在表单上添加隐藏值,例如

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

和js方面在我的回答中将如上所述,并且在php方面你可以检查;

if($_POST['submit_jobs_preview']){
    echo $city = mysql_real_escape_string($_REQUEST['new_job_city']);
}

如您所见,您可以将您的帖子值作为隐藏字段发送并进行检查