簡體   English   中英

序列化的AJAX $ _POST不為空,但單個$ _REQUEST為空

[英]Serialized AJAX $_POST is not empty but single $_REQUEST is empty

我正在這樣撥打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']);
 }

警報為空。

這是為什么? :)

提前致謝!

UPDATE

全部返回數據:

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 

$ _POST ['submit_jobs_preview']包含一個字符串,別無其他,因此您無法以這種方式訪問​​它。 使用parse_str()反序列化$ _POST ['submit_jobs_preview']。 這樣,您可以訪問其屬性。

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

如果沒有必要,則不需要使用{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']);
}

如您所見,您可以將帖子值發送為隱藏字段並進行檢查

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM