我正在使用 php 填写表格。现在,表单的许多字段都使用 ajax。
例如
选择 [国家](ajax 将显示填充该国家/地区状态的下拉列表)
选择 [states](ajax 将显示充满城市的下拉菜单)
选择 [城市](ajax 将启用提交按钮)
如果它是一个简单的基于 html 的表单,它可以很容易地用 cURL 填充。但是,如果表单使用 ajax 填充下拉字段怎么办。
谢谢
如果是简单的基于 html 的表单,可以很容易地用 cURL 填充
我不清楚你在这里的意思。据我所知,cURL 是一种用于发出 HTTP 请求的工具。它不能“填写表格”(不像,例如,WWW::Mechanize)。我错了吗?
我认为您的意思是:“如果它是一个简单的基于 HTML 的表单,我可以使用 cURL 轻松构建一个 HTTP 请求,该请求提交与使用浏览器相同的查询字符串或 POST 数据。” 我将继续这个假设。
Ajax 的使用(本身)不会阻止您手动构建表单数据并正常提交。它只是让确定您需要提交哪些数据变得更加困难。
远程系统可能会以这样一种方式实现,即如果您不按正确顺序请求所有数据位(例如,如果您在最后提交完整数据而不请求城市列表,它将失败)一个国家)。强调“可能”,这不是实现系统的明智方式。
无论如何,您可能还想使用 cURL 发出多个请求,以便您可以获取城市列表(以及可能与它们关联的任何 id)并以编程方式访问它们。
当您使用 curl“填充”表单时,实际上是在 POST 将已键入/输入到表单中的数据。
只要您知道必须使用哪些数据,就不需要发出 Ajax 请求。
因此,解决方案是:
最后,您的 curl 请求应该与提交表单时浏览器发出的请求相同——独立于之前发送的 Ajax 请求(这些请求仅对获取数据有用)
好吧,除非 Ajax 请求实际上是在服务器上“写入”某些东西——但这在这种情况下非常罕见。