阿贾克斯的困境。提交没有刷新。我需要帮助

时间:2009-04-02 13:07:32

标签: php javascript ajax

我在提交我的ajax表单时遇到问题。我已经习惯了老式的刷新方式,但这些新东西暂时还在我身边。是时候开始学习新的技术了。

我有一个自动提示框,它从数据库中获取结果并填充文本框就好了。当我在大约6个月前设计这个时,我正在搜索数据库中的值而不是键值。这是今天的问题,需要修复。

ajax返回到我的脚本的是键/值对。现在我有了id,我需要将它传递给我的php方法,以便我可以从那里处理它。

可以请你帮个忙吗?这看起来很简单但是,javascript从来都不是我的事情所以我迷失了。

以下是所有相关代码。另外,我不认为,至少从我到目前为止看到的代码示例中我甚至需要一个表单标记。我对此是否正确?理想情况下,我想使用enter按钮提交找到的ajax值,而不是使用按钮。

所以,只是为了澄清,这就是发生的事情。用户键入2或3个字母。 ajax在“LIKE”运算符上查询数据库并返回匹配项。用户选择他想要的那个然后id转到我的方法并在不同的窗口中返回确切的记录。

<form method="post" class="hdrForm" id="search" action="../../index.php?cer=2" target="_top">
<input type="text" name="string" class="hdrInput" id="string" value="Quick Search"><div id="acDiv"></div>

</form>

注意..我需要提交此功能中的“id”。现在,我从表单标签中获取POST值,这不正确但是如何?

  AC.chooseFunc = function(id,label)
  {
    document.forms.search.submit();
  }

感谢你们给我的任何帮助。

3 个答案:

答案 0 :(得分:2)

看看jQuery。这是一个JavaScript库。它包含执行Ajax的功能。

答案 1 :(得分:0)

document.getElementById("search").onsubmit = function() {
    // Do what you want with the form
    return false; // Stops submit continuing
}

这也会优雅地降低(如果你的服务器端程序是正确的),没有javascript的用户可以正常地将表单提交到action属性中的页面,而不需要AJAX。

我建议你使用像jQuery这样的框架。 A basic tutorial (including AJAX) is available

答案 2 :(得分:0)

你有两个问题。一个是你要告诉表格提交:

document.forms.search.submit();

这就是导致您的表单以标准的非xhr方式提交的原因 - 导致刷新。此外,因为您的表单不包含id的输入元素,即使使用常规表单提交也不会将其发送到服务器。

我同意海报,使用jQuery或其他东西做基于ajax的提交是个好主意。像this这样的东西可以在你的“AC.chooseFunc”函数中使用,而不是表单提交。

是的,如果你完全使用ajax,你甚至不需要表格标签。

相关问题