【问题标题】:PHP + jQuery + Ajax form submission - return results on the same pagePHP + jQuery + Ajax 表单提交 - 同一页面返回结果
【发布时间】: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

【问题讨论】:

    标签: php jquery ajax forms


    【解决方案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 想出一个对我来说更简单的解决方案时,我几乎已经找到了解决方案!谢谢你的时间!!
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2013-05-06
    • 2011-01-26
    • 2021-11-13
    • 1970-01-01
    • 2014-05-26
    • 2011-11-10
    • 2011-04-08
    相关资源
    最近更新 更多