2012-04-26 50 views
11

这是我第一篇文章,希望有人能帮助我。 过去一周,我一直在研究我的一个项目。显然,我坚持最后一部分。
所以基本上,我有一个AJAX聊天,当我提交一个行时,我发送(使用Post方法)整个要分析的行(到一个名为analysis.php的文件)。
正在分析聊天行,并通过在MySql数据库上执行查询来查找我需要的变量。
我现在需要的是将此变量与JQuery-AJAX一起使用,并将其放在我的html文件中的一个div上(因此它可以显示在左右任何聊天中)。使用jQuery/AJAX从PHP文件获取变量

这里是我的文件:
analysis.php

<?php 
$advert = $row[adverts]; 
?> 

Ajax的chat.html

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>AJAX Chat</title> 

<link rel="stylesheet" type="text/css" href="js/jScrollPane/jScrollPane.css" /> 
<link rel="stylesheet" type="text/css" href="css/page.css" /> 
<link rel="stylesheet" type="text/css" href="css/chat.css" /> 

</head> 

<body> 

<div id="chatContainer"> 

    <div id="chatTopBar" class="rounded"></div> 
    <div id="chatLineHolder"></div> 

    <div id="chatUsers" class="rounded"></div> 
    <div id="chatBottomBar" class="rounded"> 
     <div class="tip"></div> 

     <form id="loginForm" method="post" action=""> 
      <input id="name" name="name" class="rounded" maxlength="16" /> 
      <input id="email" name="email" class="rounded" /> 
      <input type="submit" class="blueButton" value="Login" /> 
     </form> 

     <form id="submitForm" method="post" action=""> 
      <input id="chatText" name="chatText" class="rounded" maxlength="255" /> 
      <input type="submit" class="blueButton" value="Submit" /> 
     </form> 

    </div> 

</div> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script src="js/jScrollPane/jquery.mousewheel.js"></script> 
<script src="js/jScrollPane/jScrollPane.min.js"></script> 
<script src="js/script.js"></script> 
</body> 
</html> 

所以,我基本上是试图让来自analysis.php文件的$ advert(在整个分析之后完成),并通过使用JQuery/AJAX最终传递给ajax-chat.html文件。 任何帮助真的很感激。我搜索了一切,但没有找到可以帮助我的东西。 在此先感谢。

+0

您不能在HTML文件中放入任何内容:到AJAX运行时,您的HTML文件不存在,它已发送到浏览器,该浏览器将创建自己的内部数据结构。你可以做的是在该浏览器中运行一些Javscript,它将更新结构。我不会说JQuery,所以我不能专门给你提供建议。 – 2012-04-26 21:17:19

+0

谢谢你的回答...只是为了让它更清楚:假设这个聊天就像情绪检测器一样。如果分析线路并发现用户的情绪良好,那么$ advert将具有“良好”的值,并且应该以某种方式检索并将其放入html中的div中并显示给用户。如果这使得它更清楚。 – harris21 2012-04-26 22:13:35

+0

是的,我明白你在做什么:这就是Ajax发明要解决的问题。我只是想告诉你我认为你可能会犯的一个概念性错误(但我可能是错的),你对某个HTML文件做了某些事情。你不能:你所能做的就是修改从该HTML创建的浏览器中的DOM。 – 2012-04-27 14:54:28

回答

31

如果我理解正确,您需要使用JSON。这是一个示例。

在你的PHP写:

<?php 
// filename: myAjaxFile.php 
// some PHP 
    $advert = array(
     'ajax' => 'Hello world!', 
     'advert' => $row['adverts'], 
    ); 
    echo json_encode($advert); 
?> 

然后,如果你正在使用jQuery,只写:

$.ajax({ 
     url : 'myAjaxFile.php', 
     type : 'POST', 
     data : data, 
     dataType : 'json', 
     success : function (result) { 
      alert(result['ajax']); // "Hello world!" alerted 
      console.log(result['advert']) // The value of your php $row['adverts'] will be displayed 
     }, 
     error : function() { 
      alert("error"); 
     } 
    }) 

而这一切。这是JSON--它用于在服务器和用户之间发送变量,数组,对象等。更多信息:http://www.json.org/。 :)

+0

注意:'json_encode($ var)'或者PHP 4.3+需要PHP 5.2+以及PECL 1.2+扩展。 @ erik1001它也是一个好主意,链接OP的文档http://php.net/manual/en/function.json-encode.php – Ozzy 2012-04-26 22:49:43

+0

如果,而不是警报(结果['ajax']),我们使用$('#the_div_I_want')。html(result); ,这个变量会显示在我的这个特定的html div中吗? – harris21 2012-04-26 23:51:48

+0

当然会。您甚至可以从服务器端发送HTML并将其显示在您想要的位置。 – suricactus 2012-04-27 12:25:57