如何使用jQuery提交一个GET方法的表单?

6

我知道使用method=get方法发送表单值

<FORM METHOD=get ACTION="test.html">

我有一个文本框用于获取电子邮件。当我使用 GET 方法提交表单时,@ 符号会被转换为 %40。 我曾在某个地方读到过 Jquery 可以通过序列化将数据发送。怎么做呢? 谢谢。


我不太确定你在这里的问题是什么。您是想让“@”不被转义吗?因为这是正确的行为:整个重点是要对其进行转义,以便您的服务器端代码可以正确地读取它,而不会导致请求被误解。通过AJAX发送表单也不会改变这一点。 - Matchu
2个回答

15
如果你想使用jQuery的serialize()方法和GET方法提交表单,可以尝试以下代码:
如果你使用PHP: 表单:
<form action='test.php' method='GET' class='ajaxform'>
   <input type='text' name='email'>
</form>

jQuery:

jQuery(document).ready(function(){

    jQuery('.ajaxform').submit( function() {

        $.ajax({
            url     : $(this).attr('action'),
            type    : $(this).attr('method'),
            data    : $(this).serialize(),
            success : function( response ) {
                        alert( response );
                      }
        });

        return false;
    });

});

test.php 中,您可以通过以下方式获取电子邮件:

$_GET['email']

更多细节:

http://api.jquery.com/jQuery.ajax/


谢谢 Naveed.. 这正是我想要的 :) - Prady
除非你在一个HTML页面中使用$_GET['email']获取电子邮件(这是不可能的),否则它需要具有.php或.phtml扩展名(除非你设置Apache激活CGI-SCRIPT引擎以支持.html扩展名)。 - Liam Bailey
Liam Bailey: 有没有办法可以捕获HTML页面中的表单值? - Prady
恐怕不行。如果你想开始处理表单,你需要开始学习其中一种服务器端语言(PHP 可能是最容易学习的)。 - Liam Bailey
如果您正在使用jQuery,这里就不需要使用submit()方法,只需检测任何按钮的点击即可。 - Ravi Soni

1

你可以使用NAVEED的答案来发送整个表单。但是如果你只想发送一个字段,你可以使用get函数的第二个参数

jQuery.get( url, [ data ], [ callback(data, textStatus, XMLHttpRequest) ], [ dataType ] )


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接