繁体   English   中英

如何通过无MySql的表单控件修复空数组(PHP,AJAX,JQuery,JS)

[英]How to fix empty array from form-control w/o mySql (PHP, AJAX, JQuery, JS)

我正在尝试为非营利组织创建PHP表单,并希望使用PHPMailer通过SMTP发送电子邮件。 我的问题是该表单包含一个动态表,我想在其中通过Ajax和JSON将数据存储/发送到.php文件,但它不会用值填充数组(即使我键入$(tr).find('td:eq(0)').val() 。Ajax数据还包含两个加法值。此外,如果我尝试对以下代码进行json_decode,则PHP会中断。

  1. 我尝试通过变量获取数据,并且它可以工作。
  2. 我试图将它们收集到一个转换为JSON的单个字符串中,但没有用(PHP不发送任何内容也不提供错误反馈)
  3. 现在,我正在尝试从行创建多个数组。 但是像2.一样不起作用

HTML正文:

<html>....
<input id="name" class="form-control" required>
<input type="email" id="email"class="form-control" required>
<table id="dynamic_field">
  <tr>
   <td>
    <textarea id="value1" class="form-control" required></textarea></td>
   <td>
    <textarea id="value2" class="form-control" required></textarea></td>
.....
</tr></table>
<input type="button" onclick="sendEmail()" value="Send &arr" class="btn btn-primary">

剧本:

function sendEmail() {
  var name = $("#name");
  var email = $("#email");
  var value1 = $("#value1");
  var value2 = $("#value2");
 ....  
  var TableData;
  TableData = JSON.stringify(storeTblValues());

  $.ajax({
          url: 'sendEmail.php',
          method: 'POST',
          dataType: 'json',
          data: {
                 name: name.val(),
                 email: email.val(),
                 value1: value1.val(),
                 value2: value2.val(),
                 TableData: TableData
   }, success:...

function storeTblValues(){
 var TableData = new Array();
 $("#dynamic_field tr").each(function (row, tr) {
   TableData[row] = {"value1": $(tr).find('td:eq(0)').text() , "value2": $(tr).find('td:eq(1)').text() , ......}
  ;});return TableData;
;}

我希望数组TableData的输出为[{"value1":"Whatever in Value 1","value2":"Whatever in Value 2 ",....}] ,但是我从此字符串中读取的是[{"value1":"\\n ","value2":"\\n ",...}]

使用$('form')。serializeArray()

例:

 $('button').click(function () { var formData = $('form').serializeArray(); console.log(formData); }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <form> <input type="text" name="your-name" placeholder="name"> <textarea name="your-text" placeholder="text"></textarea> <button type="button">Submit</button> </form> 

您也不能转换此数组:

 var searchParams = new URLSearchParams("your-name=value1&your-text=value2"); var result = {}; // Display the key/value pairs for(var pair of searchParams.entries()) { result[pair[0]] = pair[1] } console.log(result); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM