ajax在发布后从另一个页面检索数据

时间:2012-07-05 20:52:37

标签: php jquery ajax

我知道这很容易,但我只知道这段代码的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结果中。

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

在我的search.php 我有这个:

$search = $_POST['search'];
return $search;
很遗憾,我似乎无法归还任何东西。

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

谢谢你, -magician

5 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分: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 great intro to 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>

答案 2 :(得分:0)

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

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

此外,成功选项设置为在将来的jQuery版本中弃用。您应该使用.done(callbackFunction),如下所示:

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

另外,有什么理由特别指出为什么要将异步设置为false?

答案 3 :(得分:0)

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

$("#result").html(data);

答案 4 :(得分:0)

我尝试使用

type: 'GET'

并在php文件中,获取值为

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

有效。希望它也适合你。