【问题标题】:PHP POST: Setting data variables dynamically from an arrayPHP POST:从数组动态设置数据变量
【发布时间】:2017-06-23 14:14:25
【问题描述】:

大家好,我对 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 调用感到困惑并且还不够好。

编辑:看起来我的问题有点不清楚(抱歉,第一次发帖哈哈)我正在尝试动态推送我从 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'];

【问题讨论】:

  • 到底是什么问题?我们需要知道如何提供帮助。
  • 首先你的 PHP 代码?其次,您希望从您的 php 收到什么类型的数据?
  • @Kyle 我编辑了这个问题,让它更清楚一点。问题是因为表单是动态生成的,所以我不知道字段和值将是什么(或其中有多少),所以我需要一种方法将它们推送到动态生成的数据对象。我知道如何静态地这样做,但是因为表单是动态生成的,所以对象也应该是动态生成的,这就是我迷路的地方。
  • @JoseMarques 不完全是我的第一个不,但我以前不必处理太多动态的事情。我正在尝试从表单中提取一些文本/数字值并将它们放入一个新的文本文件中。我编辑了我的问题,可能有助于使其更清楚。
  • 如果我理解,你想通过ajax在你的数组中发送多个值?

标签: javascript php jquery ajax post


【解决方案1】:

要得到准确的答案,我们需要看看“子类别”数组是什么样子的。

如果我理解正确,您希望将值放入对象而不是数组(值)中。所以第一部分看起来像:

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");
      }
 });

【讨论】:

  • 哇,我不敢相信解决方案这么简单!我觉得有点傻。谢谢!
【解决方案2】:

如果您想使用“values”变量生成“数据”对象,您可以执行以下操作:

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

【讨论】:

    猜你喜欢
    • 2018-12-18
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多