0

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

例如

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

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

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

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

谢谢

4

2 回答 2

0

如果是简单的基于 html 的表单,可以很容易地用 cURL 填充

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

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

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

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

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

于 2010-01-13T12:11:02.680 回答
0

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

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


因此,解决方案是:

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


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


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

于 2010-01-13T12:12:00.517 回答