2017-06-23 59 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