2017-06-23 80 views
0

大家好,我很新的PHP和AJAX和所有那些好東西,我有點難以理解如何從我的代碼中繼續。PHP POST:從數組動態設置數據變量

我有一個表單正在發送,我有一個數組(子類別),其中包含表單標籤來檢索字段的值。字段和值是根據用戶上傳的文本文件動態創建的,因此我無法知道它們是什麼。

var arrayLength = subcategories.length; 
for (var i = 0; i < arrayLength; i++) { 
    var eachfield = subcategories[i]; 
    //Do something 

    //@C: selector is working fine, cleaning input 
    var eachfield = $('#' + eachfield).val().trim(); 

    //push the appropriate values with the fixed stuff to a new array 
    values.push(eachfield); 
} 

什麼我想現在要做的是將這些變量設置爲某個名字,並通過$給他們使用AJAX和POST數據。

如果我靜態設置所有內容,就像下面這樣。

var data = { 
    dimitypedata: dimitype, 
    densitydata: density, 
    velocitydata: velocity, 
    temperaturedata: temperature, 

    submitbtnclicked: "submitted" 
}; 

//using the data and sending it through a post with promise handling 
$.ajax({ 
    type: 'POST', 
    url: "controller.php", 
    data: data, 
    success: function(response) { 
    //alert("worked"); 
    //console.log(response); 
    alert(response); 
    }, 
    error: function() { 
    alert("There was an error submitting the information"); 
    } 
}); 

我不太清楚如何搭配這兩個,並且可能得到一個混亂,還沒有成爲那個偉大的POST和AJAX調用的部分原因。

編輯:它看起來像我的問題有點不清楚(對不起,先發布哈哈)我試圖動態地推送我從HTML表單字段中取出的值。問題在於表單的生成取決於用戶選擇上傳到網站的內容(比如字段和表單)。我的最終目標是讓用戶能夠根據他們上傳的文本文件編輯動態生成的表單並且能夠在點擊提交按鈕後在GUI上編輯它後生成一個新的文本文件,如果它是靜態的,我可以這樣做,但如果我不知道表單將包含:

我正在嘗試訪問我的數據對象,以便在我的AJAX調用中使用它。以下是一些在下一步中使用的PHP代碼,如果變量是靜態的:

if(isset($_POST['submitbtnclicked']) && $_POST['submitbtnclicked'] == 'submitted') { 
//new instance of model for use 
    $model = new model(); 

$dimitypedata = $_POST['dimitypedata']; 
$densitydata = $_POST['densitydata']; 
$velocitydata = $_POST['velocitydata']; 
$temperaturedata = $_POST['temperaturedata']; 
+0

到底是什麼問題?我們需要知道如何提供幫助。 – KyleS

+0

首先你的PHP代碼?其次是你期望從你的PHP接收什麼類型的數據? –

+0

@Kyle我編輯了這個問題,使它更清晰一點。問題是因爲表單是動態生成的,所以我不知道字段和值會是什麼(或者它們會有多少),所以我需要一種方法將它們推送到動態生成的數據對象。我知道如何靜態地這樣做,但是因爲表單是動態生成的,所以對象應該也是這樣,那就是我迷路的地方。 – Pary

回答

0

對於確切答案呃,我們需要看看「子類別」數組是什麼樣的。

如果我理解正確,您希望將值放入對象中而不是數組(值)。所以第一部分看起來像:

var data = {}; 
var arrayLength = subcategories.length; 
for (var i = 0; i < arrayLength; i++) { 
    //notice that now field name and field value go in separate variables 
    var fieldName = subcategories[i]; 

    //@C: selector is working fine, cleaning input 
    var fieldValue = $('#'+eachfield).val().trim(); 

    //push the appropriate values with the fixed stuff to a data object 
    data[fieldName] = fieldValue; 
} 


//and then you send your gathered data 
//using the data and sending it through a post with promise handling 
$.ajax({ 
type: 'POST', 
url: "controller.php", 
data: data, 
success: function(response) { 
    //alert("worked"); 
    //console.log(response); 
    alert(response); 
    }, 
    error: function() { 
     alert("There was an error submitting the information"); 
     } 
}); 
+0

哇,我不能相信解決方案那麼簡單!我覺得有點愚蠢。謝謝! – Pary

0

如果你想生成使用「價值」可變的「數據」對象,你可以做下:

values = []; // here your values collected previously 
var data = {}; 
for (var key in values){ 
    data[key] = values[key]; 
} 
//now you can use your data in AJAX 
+0

您的解決方案也有效!謝謝!! – Pary