2

我知道这很容易,但我只知道这段代码的 DOM 等价物。很长的那个。我已经在堆栈中搜索了一些问题,但我似乎找不到解决方案。

所以基本上我有这个脚本:

function searchNow(str)
{
    $.ajax({
    url: "search.php",
    type: "POST",
    async: false,
    data:  {"search": str},
    success: function(data){
            alert("test");
            $("#result").html(data);
        }
    });
}

<table>

<tr>
    <td>Search: </td>
    <td><input type = "text" name = "search" onBlur="searchNow(this.value)">      </td>
</tr>

这会将搜索提交给 search.php 以进行查询搜索并检索结果并将其显示在 id result 中。

我可以使用旧的 DOM ajax 轻松做到这一点,但后来我想尝试使用这个 jquery 版本,因为它更干净,也许更快。

在我的 search.php 我有这个:

$search = $_POST['search'];
return $search;

可悲的是,我似乎根本无法归还任何东西。

一些输入将不胜感激,我已经开始熟悉 jquery ajax 但仅在同一页面上,而不是在页面间操作上。

谢谢你,-魔术师

4

5 回答 5

4

您的 PHP 文件应输出该值。ajax 将读取该页面并获取其内容。

$search = $_POST['search'];
echo $search;
于 2012-07-05T20:55:28.780 回答
1

你想做echo $search而不是return

您还可以添加print_r($_POST);以查看 PHP 方面正在发生的事情。

一旦你看到它在做什么,你就可以进一步开发你的 php 脚本。

// Sets the correct response type
header('Content-type: application/json');

// get your search string/query
$search = $_POST['search'];

/*
 * Do whatever you need in order to get a result
 */

echo json_encode($result);

exit;

如果您将搜索查询传递给数据库,请务必阅读 Nettuts对 PDO 的精彩介绍。有很多常见的陷阱会导致安全问题/漏洞利用——避免其中一个主要的陷阱(SQL 注入)在这篇文章中有所介绍。

根据您的评论,确保带有搜索字段的页面在正确的位置正确包含 jquery(抱歉,如果这很明显,我并不是要光顾!)

<html>
<head>

    <title>Jquery Ajax</title>

    <!-- google nicely host jquery for free... -->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
</head>

<body>

    <script type="text/javascript">
    function searchNow(str)
    {
        $.ajax({
            url: "search.php",
            type: "POST",
            data:  { "search": str },

            success: function(data) {
                alert("test");
                $("#result").html(data);
            }
        });
    }
    </script>

    <table>
        <tr>
            <td>Search: </td>
            <td><input type="text" name="search" onBlur="searchNow(this.value)" /></td>
        </tr>
    </table>

    <div id="results"></div>

</body>
</html>
于 2012-07-05T20:55:39.497 回答
0

您的 PHP 文件应输出该值。ajax 将读取该页面并获取其内容。

$search = $_POST['search'];
echo $search;

此外,在 jQuery 的未来版本中将不推荐使用 success 选项。您应该像这样使用 .done(callbackFunction) :

    $.ajax({
      url: 'beh.php',
      type: 'POST',
      data: {search: "beeeeeeeh"}
    }).done(function () {
      // do stuff
    })

另外,有什么特别的原因为什么您将 async 设置为 false 吗?

于 2012-07-05T20:56:31.683 回答
0

不要忘记创建一个 ID="result" 的 HTML 元素,选择器使用它来包含 search.php 打印的结果。

$("#result").html(data);
于 2012-07-05T21:07:06.047 回答
0

我尝试使用

type: 'GET'

在 php 文件中,得到的值为

$search = $_GET['search'];
echo $search;

有效。希望它也对你有用。

于 2016-10-20T04:31:05.560 回答