PHP + jQuery + Ajax 表单提交 - 同一页面返回结果

Posted

技术标签:

【中文标题】PHP + jQuery + Ajax 表单提交 - 同一页面返回结果【英文标题】:PHP + jQuery + Ajax form submission - return results on the same page 【发布时间】:2011-08-06 14:22:17 【问题描述】:

我想要以下:

用户通过点击提交表单 (index.php),表单输入由外部 PHP 文件 (search.php) 处理,结果发布在原始页面 (index.php) 的 div 中。

我已经收集了大部分代码。它通过单击提交表单并将其发送到 PHP 脚本。

我现在需要将 PHP 脚本的结果返回到原始页面 (index.php)。

到目前为止,这是我的代码:

function submit() 
    $(function() 
        var id = "id";
        var dataString = 'id=' + id;
        $.ajax(
            type: "POST",
            url: "inc/search.php",
            data: dataString,
            success: function() 
                goToByScroll("result");
                $('#result').html("<br><br><br><br><br><br><br><br><br><br><
                                   div class='center'><img src='img/loader.gif' /></div>").hide().fadeIn(2500, function() 
                $('#result').html("Finished");
                );
            
        );
        return false;
    );

我的 PHP 文件(用于测试)是:

<?php function safe($value)

    htmlentities($value, ENT_QUOTES, 'utf-8');
    return $value;

if (isset($_POST['id'])) 
    $id = safe($_POST['id']);
    echo ($id);

elseif (!isset($_POST['id'])) 
    header('Location: error?id=notfound');
 ?>

我希望将search.php(在本例中为“id”)的结果发布到#result,但我不知道如何:S

【问题讨论】:

【参考方案1】:

我认为您几乎拥有一切。 success 下的回调函数需要一个参数,它代表来自 search.php 的结果

     success: function(res) 
             goToByScroll("result");
             $('#result').html("<br><br><br><br><br><br><br><br><br><br><div class='center'><img src='img/loader.gif' /></div>").hide().fadeIn(2500, function() 
                 $('#result').html(res + "<br /><br /> Finished");
             );
          

res 是所有输出为search.php。回声,php 标签之外的东西,等等如果你加载了search.php 本身,你会看到什么。

我不知道您是否希望“已完成”仍然存在。不吃就拿出来。

【讨论】:

这是 100% 的工作 :) 最好的事情是:我只需要复制和粘贴它!非常感谢! 哈哈,我只在你的字符中添加了大约六个字符,你可以直接输入它们。很高兴它成功了【参考方案2】:

为你的成功函数添加一个参数,例如:

success: function(param)  ... 

参数是一个字符串,它是服务器端脚本的所有输出。您可以将其设置为您想要的任何内容并将其放置在某个元素中

$("#element").html(param);

【讨论】:

您好,观察者,感谢您的快速回复和您的时间!我刚刚包含了我的 php 测试脚本。你能告诉我在上面的例子中我必须添加什么来在 index.php 上显示我的结果吗? 无论您在服务器端 php 脚本中回显什么,都将设置为成功函数中的变量 param。只需回显 ID,如果没有找到它只是 echo("ID Not Found");。然后在成功函数中执行:$("#results").html(param); 这应该可以工作。 非常感谢大家!当 jon_darkstar 想出一个对我来说更简单的解决方案时,我几乎已经找到了解决方案!谢谢你的时间!!

以上是关于PHP + jQuery + Ajax 表单提交 - 同一页面返回结果的主要内容,如果未能解决你的问题,请参考以下文章

php 用于在PHP中提交AJAX表单的Jquery Ajax Post示例

使用 AJAX PHP JQuery 提交表单将我带到操作页面

使用 jQuery AJAX 向所需的 PHP POST 请求处理程序提交表单不起作用

Jquery AJAX提交多个FORM表单

使用 jQuery-AJAX 向 PHP 提交表单并在不刷新的情况下在 div 中显示新内容的问题

表单提交 - php ajax jquery-ui - 不会在 Firefox 或 IE 上执行