Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ajax表单转到另一个页面,而不是停留在同一页面上_Php_Jquery_Html_Ajax_Forms - Fatal编程技术网

Php ajax表单转到另一个页面,而不是停留在同一页面上

Php ajax表单转到另一个页面,而不是停留在同一页面上,php,jquery,html,ajax,forms,Php,Jquery,Html,Ajax,Forms,我有一个弹出式ajax表单,它不是发送数据并保持在同一页面上,而是发送数据,但从我的表单将我带到send.php文件。为什么呢?我在另一个站点上正确地实现了几乎相同的表单。我不知道我做错了什么 表格: 谢谢 在纯Javascript中,您需要执行以下操作: function sendWithAjax() { var ajax = new XMLHttpRequest(); ajax.open("POST", "send.php", true); $(document).r

我有一个弹出式ajax表单,它不是发送数据并保持在同一页面上,而是发送数据,但从我的表单将我带到send.php文件。为什么呢?我在另一个站点上正确地实现了几乎相同的表单。我不知道我做错了什么

表格:


谢谢

在纯Javascript中,您需要执行以下操作:

function sendWithAjax() {
    var ajax = new XMLHttpRequest();
    ajax.open("POST", "send.php", true);
   $(document).ready(function(event){
        event.preventDefault();
        $('#FORMID').ajaxForm({
            type: 'POST',
            dataType: 'json',
            beforeSubmit: function(){
            },
            success: function(resp){

            },
            error: function(resp){

            }
        });
    });
然后从输入元素中读取值:

    var email = document.getElementById('email').value;
    var name = document.getElementById('name').value;
    var message = document.getElementById('message').value;
在调用.send()之前,可以在此处验证表单

(可能需要使用escape()函数转义表单元素的内容)

并将它们放入发送方法:

    ajax.send("email="+ email +"&name="+ name +"&message="+ message);
并从表单代码中删除完整的表单标记。因此,您不需要提交按钮,因此将其更改为简单按钮:

<input type="text"  id="name" name="name" value="" /><br />
<input type="text"  id="email" name="email" value=""  /><br />
<textarea name="message" cols="4" rows="4"  id="message" ></textarea><br />
<input type="submit" value="" id="submit" title="Send!" onclick="javascript:sendWithAjax()"/>
尝试添加以下内容:

$(“#提交”)。单击(函数(){return false;/*停止html表单提交*/})
我相信jquery正在通过ajax发送表单数据,但是您并没有像正常情况那样停止默认的“提交”按钮提交html表单。添加上述代码将停止提交按钮的默认操作(将表单提交到send.php),从而将您留在当前页面上。

类似于:

function sendWithAjax() {
    var ajax = new XMLHttpRequest();
    ajax.open("POST", "send.php", true);
   $(document).ready(function(event){
        event.preventDefault();
        $('#FORMID').ajaxForm({
            type: 'POST',
            dataType: 'json',
            beforeSubmit: function(){
            },
            success: function(resp){

            },
            error: function(resp){

            }
        });
    });

希望这会有所帮助。

以下是如何使用ajax发送表单(顺便说一句,您没有这样做)我设法让它与该示例一起工作,但我无法确定如何在使用该代码提交之前验证每个输入。。。
<input type="text"  id="name" name="name" value="" /><br />
<input type="text"  id="email" name="email" value=""  /><br />
<textarea name="message" cols="4" rows="4"  id="message" ></textarea><br />
<input type="submit" value="" id="submit" title="Send!" onclick="javascript:sendWithAjax()"/>
    var response = ajax.responseText;
}
   $(document).ready(function(event){
        event.preventDefault();
        $('#FORMID').ajaxForm({
            type: 'POST',
            dataType: 'json',
            beforeSubmit: function(){
            },
            success: function(resp){

            },
            error: function(resp){

            }
        });
    });