在表单提交中使用新行时,sp​​lit切断重要的表单条目信息

如何解决在表单提交中使用新行时,sp​​lit切断重要的表单条目信息

我正在尝试传递Woocommerce订单上重力形式提交的信息,以便在使用Zapier的另一个应用程序中使用。我需要对表单条目信息进行拆分,以使信息不会全部位于一行上,并且可以单独访问。

由于我对JavaScript还是很陌生,所以我一直在努力几个小时才能使其工作……我正在使用的代码来自woocommerce文档。问题在于,如果所述信息继续到新行,则可以截断大量信息。请查看下面的拆分结果,并参考问题2 以了解我在说什么。

代码:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="myTextarea" cols="50" rows="4" placeholder="Enter text"></textarea>
<br>
<button onclick="getText()">
Split 
</button>

表单提交示例如下:

 // Define "metaData" in the Input Data section. Ignore the "No Data" label.
// Reformat Resource Meta Data to generate keyvalue pairs.
// In case of multiple equal keys,only the last value available.
const buffer = {};
const metaData = inputData.metaData.split(/\n+/);
metaData.forEach((dataString,index) => {
  if (dataString.includes('id:')) {
    const key = metaData[index + 1].replace('key:','').trim();
    const value = metaData[index + 2].replace('value:','').trim();
    buffer[key] = value;
  }
});
return buffer;

拆分结果如下:

Name: John
Last Name: Doe
Email: john.doe@gmail.com
Question 1: this is my first question
Question 2: hi there,this is my second question..

            regards,john doe
Question 3: This is my third question

如您所见,问题2基本上消失了。我一直无法找到一种使此工作正常进行的方法。我希望有人能够在这里帮我一个忙...

编辑 __________________

按要求进行RAW:

Name: John

Last Name: Doe

Email: john.doe@gmail.com

Question 1: this is my first question

Question 2: hi there,Question 3: This is my third question

预期的结果:

id: 419*** key: _gravity_forms_history value: {'_gravity_form_cart_item_key': '************************************','_gravity_form_linked_entry_id': ****,'_gravity_form_lead': {'2': 'This is my first question','6': 'john.doe@gmail.com','7': '2020-08-01','8': 'hi there,\r\nthis is my second question..\r\n\r\nregards,john doe','9': 'This is my third question','11': 0,'12': this is a random form entry','form_id': '3','source_url': 'https://***************************/','ip': ***************','5.2': '','5.3': 'John','5.4': '','5.6': 'Doe','5.8': '','10.1': 'Product Name','10.2': '$0.00','10.3': '1'},'_gravity_form_data': {'id': '3','bulk_id': 0,'display_title': False,'display_description': False,'disable_woocommerce_price': 'no','price_before': '','price_after': '','disable_calculations': 'yes','disable_label_subtotal': 'yes','disable_label_options': 'yes','disable_label_total': 'yes','disable_anchor': 'no','label_subtotal': 'Subtotal','label_options': 'Options','label_total': 'Total','use_ajax': 'no','enable_cart_edit': 'no','enable_cart_edit_remove': 'yes','keep_cart_entries': 'no','send_notifications': 'no','enable_cart_quantity_management': 'no','cart_quantity_field': '','update_payment_details': 'no','display_totals_location': 'after','structured_data_override': 'no','structured_data_low_price': '','structured_data_high_price': '','structured_data_override_type': 'append'}}
 
id: 419***
key: Name
value: John Doe

id: 419***
key: Email
value: john.doe@gmail.com

id: 419***
key: Date of Birth
value: 01.08.2020

id: 419***
key: Question 1
value: This is my first question

id: 419***
key: Question 2
value: hi there,this is my second question..
regards,john doe

id: 419***
key: Question 3
value: This is my third question

id: 419***
key: Final Entry (Optional)
value: this is a random form entry

当前请求的结果:

Name: John Doe

Email: john.doe@gmail.com

Date of Birth: 01.08.2020

Question 1: This is my first question

Question 2 :Hi There,This Is My Second Question..

            Regards,John Doe

Question 3: This is my third question

Final Entry: this is a random form entry

id: ******************************

runtime_meta:

memory_used_mb: 72

duration_ms: 100

logs:

async: false

解决方法

拆分结果如下:

Name: John
Last Name: Doe

Email: john.doe@gmail.com

Question 1: this is my first question

Question 2: hi there,Question 3: This is my third question

不,不,不,不,不。这就是您认为的结果。您的代码中有错误,并且您选择相信split函数而不是代码是错误的。

在您的forEach循环中,添加一行,例如

console.log('XXXX',dataString);

紧邻if (dataString.includes('id:')) {行上方。您会看到输入的每一行都以XXXX前缀注销,包括您声称丢失的每一行。

那么为什么 您的代码没有执行您想要的操作?好,让我们看一下forEach调用的函数的内容:

if (dataString.includes('id:')) {
  const key = metaData[index + 1].replace('key:','').trim();
  const value = metaData[index + 2].replace('value:','').trim();
  buffer[key] = value;
}

它是做什么的?如果文件的一行包含id:,请从下一行及其后的行中获取键和值。如果文件行中不包含id:,请不要对其进行任何操作。

在您的情况下,问题2包含多行,如我们所见,您的代码完全忽略了这一行。

如果您想要读取的所有行(包括但不包括带有id:的下一行,而不是仅读取值中的下一行),请尝试以下操作:

  if (dataString.includes('id:')) {
    const key = metaData[index + 1].replace('key:','').trim();
    let value = metaData[index + 2].replace('value:','').trim();
    
    let index2 = index + 3;
    while (index2 < metaData.length && !metaData[index2].includes('id:')) {
      value += "\n" + metaData[index2].trim();  
      index2 += 1;
    }
    
    buffer[key] = value.trim();
  }
,

您可以使用正则表达式分隔条目,然后将结果简化为键值对

import win32gui

the_window_hwnd = win32gui.GetForegroundWindow()  # hwnd of the specific window,it could be whatever you what
left_top_x,left_top_y,*useless_position = win32gui.GetWindowRect(the_window_hwnd) # get the position of window you gave.

mouse_pos_x,mouse_pos_y = win32gui.GetCursorPos()
pos_in_window_x,pos_in_window_y = (mouse_pos_x - left_top_x),(mouse_pos_y - left_top_y)

print(pos_in_window_x,pos_in_window_y)

JsFiddle

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-