是否可以使用 php 以编程方式填写 Ajax 表单?

Posted

技术标签:

【中文标题】是否可以使用 php 以编程方式填写 Ajax 表单?【英文标题】:Is it possible to fill in an Ajax form programatically using php? 【发布时间】:2010-01-13 12:01:24 【问题描述】:

我正在使用 php 填写表格。现在,表单的许多字段都使用 ajax。

例如

选择[国家] (ajax 将显示填充该国家/地区的下拉列表)

选择[状态] (ajax 将显示充满城市的下拉菜单)

选择[城市] (ajax 将启用提交按钮)

如果是简单的基于 html 的表单,可以很容易地用 cURL 填充。但是如果表单使用 ajax 填充下拉字段怎么办。

谢谢

【问题讨论】:

【参考方案1】:

当您使用 curl“填充”表单时,您实际上是在 POST 已输入/输入到表单中的数据。

只要您知道必须使用哪些数据,就不需要发出 Ajax 请求。

因此,解决方案是:

首先获取数据列表(例如,通过在浏览器中使用表单) 了解必须如何使用这些数据(通过观察表单的“正常”工作方式) 使用您的 curl 请求发布正确的值。

最后,您的 curl 请求应该与提交表单时浏览器发出的请求相同——独立于之前发送的 Ajax 请求(这些仅对获取数据)

好吧,除非 Ajax 请求实际上是在服务器上“写入”某些东西——但这种情况很少见。

【讨论】:

【参考方案2】:

如果是简单的基于html的表单,可以很方便的用cURL填充

我不清楚你在这里的意思。据我所知,cURL 是一种用于发出 HTTP 请求的工具。它不能“填写表格”(不像,例如,WWW::Mechanize)。我错了吗?

我认为您的意思是:“如果它是一个简单的基于 HTML 的表单,我可以使用 cURL 轻松构建一个 HTTP 请求,该请求提交与使用浏览器相同的查询字符串或 POST 数据。”我将继续这个假设。

Ajax 的使用(本身)不会阻止您手动构建表单数据并正常提交。它只是让确定您需要提交哪些数据变得更加困难。

如果您没有按正确的顺序请求所有数据位,远程系统可能会以这样的方式实现(例如,如果您在最后提交完整数据而不请求列表,它将失败)一个国家的城市)。强调“可能”,这不是实现系统的明智方式。

您可能还想使用 cURL 发出多个请求,以便您可以获取城市列表(以及可能与它们关联的任何 id)并以编程方式访问它们。

【讨论】:

以上是关于是否可以使用 php 以编程方式填写 Ajax 表单?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式为视频加水印

是否可以通过 Spring Security 以编程方式进行身份验证并使其持久化?

使用 PHP 以编程方式将 CSS 注入 Joomla 内容编辑器 (JCE)?

以编程方式在 BigQuery 的数据集中创建表

$ajax默认以啥方式请求数据

使用 URI Intent 打开 App 后,以编程方式填写输入并提交 AngularJS 表单