如何从jQuery AJAX中获取数据?

时间:2012-02-06 00:16:54

标签: jquery ajax forms contact

我正在使用以下代码。这是提交与PHP的罚款,它似乎成功ajax行动...实施AJAX后,并提交了一封电子邮件......但在电子邮件中没有显示电子邮件数据,它是空白....

HTML

<form id="sForm" action="submit.php" method="get">
<label>your e-mail: </label>
<input type="text" name="email"></input>
<input id="sub" type="submit" />

</form>
<div id="message_ajax"></div>
<div id="error"></div>

的jQuery

$("#sub").click(function(){


var datastr = 'email'

$.ajax({
    type: 'GET',
    url: 'submit.php',
    data: datastr,
    beforeSend:function(){
            $('#message_ajax_wait').append('Loading...');
    },
    success:function(data){
            $('#message_ajax_wait').fadeOut(400);
            $("#message_ajax_done").append('done!');
    },
    error:function(){
            $('#error').append('sigh... lets fix... or its server fault');
    }
});

return false;

});

看,我删除了“return false;”它可以在电子邮件收件箱中显示电子邮件数据,但是AJAX响应不起作用,并重定向到丑陋的php页面,作为submit.php编码发送电子邮件。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

尝试将数据对象设置为

var data = {email:$("input[name=email]").val()};

$.ajax({
    type: 'GET',
    url: 'submit.php',
    data: data,
    beforeSend:function(){
    ....
};

答案 1 :(得分:1)

您可以使用.serialize()方法轻松发布表单中的所有字段。所以在你的情况下:

var datastr = $("#sForm").serialize();

或者不先将其添加到字符串中:

$.ajax({
    type: 'GET',
    url: 'submit.php',
    data: $("#sForm").serialize(),
    beforeSend:function(){
    ....
};

答案 2 :(得分:1)

您在AJAX请求中发送了错误的数据。如果将var datastr = 'email';更改为var datastr = 'email=' . $('#email').val();并将id="email"添加到电子邮件输入中,则应该有效。

相关问题