2015-04-29 76 views
0

我用這個代碼發送一個表單+一個變量到一個php腳本。jquery發佈表單和變量一起

function upload() { 
    var test = "test"; 
    var infos = $('form').serialize() + '&' + test; 
    $.post("ajax.php", { infos: infos }).done(function (data) { 
    alert(data); 
    }); 
} 

現在PHP-代碼:

$data = $_POST['infos']; 
echo $data; 

回報:formfield1 =值& formfield2 =數值& formfield3 =值3 &測試

所有值都在這個變量... 但我可以如何使用它們與PHP分開?

例如:

$data = $_POST['formfield1']; 

沒有工作:(

+0

[explode()](http://php.net/explode) – ElGavilan

回答

2

使用jQuery的serializeArray()這將返回與包含2個屬性的對象數組:名稱和值,那麼你可以分析它。並把它作爲數據。

它可能看起來像這樣

var formdata = = $('form').serializeArray(); 
var infos = { }; 
for (var i = 0; i < formdata.length; i++) { 
    infos[formdata[i].name] = formdata[i].value; 
} 

// To add separate values, simply add them to the `infos` 
infos.newItem = "new value"; 

$.post("ajax.php", infos).done(function (data) { 
    alert(data); 
}); 

然後在PHP中,您將使用$_POST["formfield1"]檢索值。

+0

只需將它們添加到infos對象'infos.testItem =「test」 – leopik

0

嘗試explode他們 -

$data = $_POST['infos']; 
$form_data = explode('&', $data); 
$posted_data = array(); 

foreach ($form_data as $value) { 
    list($key, $val) = explode('=', $value); 
    $posted_data[$key] = $val; 
} 

var_dump($posted_data); 
0

可以使用parse_str方法來查詢字符串轉換爲數組。

在你的情況,你可以做這樣的事情:

parse_str($_POST['infos'], $data); // $data['formfield1'], $data['formfield2'], $data['formfield3'] have the values you need 

更多細節在這裏:http://php.net/manual/en/function.parse-str.php

0

//這裏是jQuery的部分

function upload() { 
     var test = "test"; 
     var infos = $('form').serialize() + '&' + test; 
     $.post("ajax.php", { infos: infos },function (data) { 
     alert(data); // the fetched values are alerted here. 
     }); 
    } 

// PHP的一部分在這裏

$data = $_POST['infos']; 
$field_seperator='&'; 
$val_seperator='='; 
$form_data_val=explode($field_seperator,$data); 
    foreach($form_data_val AS $form_vals){ 
     $vals=explode($val_seperator,$form_vals); 
     echo $vals[1];// here the value fields of every form field and the test is fetched. 
    } 

試試這個。