Ajax表单在当前页面上提交

时间:2015-10-08 07:00:16

标签: javascript php jquery ajax forms

我想通过ajax提交表单并将其发送到我当前的页面以防止刷新。

这是我的HTML:

<form id="suchForm" method="post" action="<?=$PHP_SELF?>">
    <input type="text" id="suche" name="suche" placeholder="Suchen"/>
    <input type="submit style="display:none;" />
</form>

顺便提一下隐藏提交按钮,所以我按键盘上的return键提交表单。

这是我的PHP脚本:

if ( $_SERVER["REQUEST_METHOD"] == 'POST' ) {
    $suche = $_POST['suche'];
    if (!empty($suche)) {    
        <?php echo $suche ?>
    }  
 }  

最后,这是我目前的Ajax脚本:

var frm = $('#suchForm');
frm.submit(function (ev) {
    $.ajax({
        type: frm.attr('method'),
        url: frm.attr('action'),
        data: frm.serialize(),
        success: function (data) {
            alert('ok');
        }
    });
    ev.preventDefault();
    }); 

表单由Ajax成功提交。问题:Ajax脚本阻止刷新站点,因此PHP脚本(<?php echo $suche ?>)不显示任何内容。你有任何解决方案用Ajax发送表单,防止刷新(导致一些javascript应该在提交后发生)并显示PHP回声吗?

2 个答案:

答案 0 :(得分:1)

尝试替换警报('ok');用代码显示ajax响应。这样的事情应该有用 -

var frm = $('#suchForm');
frm.submit(function (ev) {
$.ajax({
    type: frm.attr('method'),
    url: frm.attr('action'),
    data: frm.serialize(),
    success: function (data) {
        $('<NAME_OF_YOUR_CONTAINER_TO_DISPLAY_RESPONSE>').html(data);
    }
});
ev.preventDefault();
}); 

答案 1 :(得分:0)

如果$suche不是empty,则php将echo。因此,如果您可以同时查看页面,则可以看到期望的结果,但是在这种情况下,您可以让AJAX为您进行提交,因此AJAX是可以“看到”该页面的人。如果要显示AJAX可以“看到”的内容,则只需在success: function()...内执行接收数据的任何操作即可。 您可以alert(data)而不是alert("OK")来获得更多线索。