PHP POST:从数组

时间:2017-06-23 14:14:26

标签: javascript php jquery ajax post

大家好我不熟悉PHP和AJAX以及所有这些好东西,而且我对如何从我的代码中继续操作感到有点困惑。

我有一个正在发送的表单,我有一个数组(子类别),其中包含用于检索字段值的表单标签。字段和值是根据用户上传的文本文件动态创建的,因此我无法知道它们是什么。

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通过$ data发送它们。

如果我静态设置所有内容,请执行以下操作。

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调用时感到困惑而且还不是很好。

编辑:看起来我的问题有点不清楚(对不起,先发布lol)我试图动态推送我从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'];

2 个答案:

答案 0 :(得分: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");
      }
 });

答案 1 :(得分:0)

如果您想使用'values'变量生成'data'对象,可以执行下一步:

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