2012-07-05 59 views
1

我知道这很容易,但我只知道这个代码的DOM等价物。很长的一个。我已经在这里搜索了一些问题,但我似乎找不到解决方案。ajax从后一页检索数据

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

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

回答

4

你的PHP文件应该输出值。 ajax正在阅读该页面并获取其内容。

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

还是什么都没有。即时通讯不知道如果我做这个正确的。 – magicianiam 2012-07-05 20:59:27

+0

把'console.log(arguments);'放入你的成功函数中,并在javascript调试控制台(在铬版的mac上的'cmd + opt + j')看看发生了什么。你的'警报'射击吗? – 2012-07-05 21:05:46

+0

警报没有被触发,它可能是成功不被调用。 uhm im在窗户上。 – magicianiam 2012-07-05 21:06:36

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> 
+0

仍然没有,虽然 – magicianiam 2012-07-05 21:03:51

0

你的PHP文件应输出该值。 ajax正在阅读该页面并获取其内容。

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

另外,jQuery的未来发行版中将成功选项设置为不推荐使用。您应该改用.done(callbackFunction参数)像这样:

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

此外,有没有任何理由尤其为什么要设置异步为假?

+0

仍然没有什么,虽然 – magicianiam 2012-07-05 21:05:58

+0

你传递数据:{搜索:“behhhhhh”}在$ .ajax调用?此外,发布必须全部大写,并以字符串形式传递。 – Austin 2012-07-05 22:25:25

0

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

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

我尝试使用

type: 'GET' 

和PHP文件,拿到了价值

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

它的工作。希望它也适用于你。