2011-04-15 90 views
4

我想有以下的返回结果(search.php)并将结果张贴在原始页面(index.php)中的div中。PHP + jQuery的+ Ajax表单提交相同的页面

我已经把大部分的代码放在一起了。它通过单击提交表单并将其发送到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

回答

7

我认为你几乎可以做到所有事情。你有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,你会看到任何东西。

我不知道你是否想'成'仍然存在。把它拿出来,如果你不。

+0

这是100%正常工作:)和最好的事情:我只需要复制并粘贴它!非常感谢! – Andrej 2011-04-15 20:09:02

+1

呵呵,我只给你添加了大约六个字符,你只能输入它们。很高兴它解决了 – 2011-04-15 22:53:45

2

添加一个参数到您的成功功能,例如:

success: function(param) { ... } 

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

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

嗨看守,感谢您的快速回复和你的时间!我刚刚包括我的PHP测试脚本。你能让我知道我在上面的例子中添加什么来在index.php上显示我的结果吗? – Andrej 2011-04-15 19:52:22

+0

他已经做到了。 – 2011-04-15 19:54:31

+0

无论你在你的服务器端回显php脚本将被设置为成功函数中的变量参数。只要回显ID,如果找不到'echo(“ID Not Found”);'。然后在成功函数中做:'$(“#results”)。html(param);'这应该是有效的。 – 2011-04-15 19:55:26