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

时间:2010-01-13 12:01:24

标签: php ajax forms autofill

我使用php填写表单。现在,碰巧表单正在为其许多字段使用ajax。

e.g。

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

选择[状态]   (ajax将显示满是城市的下拉列表)

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

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

由于

2 个答案:

答案 0 :(得分:0)

  

如果它是一个简单的基于html的表单,可以很容易地填写cURL

我不清楚你的意思。据我所知,cURL是一个用于发出HTTP请求的工具。它不能“填充表单”(例如,WWW :: Mechanize不同)。我错了吗?

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

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

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

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

答案 1 :(得分:0)

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

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


所以,解决方案是:

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


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


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