我正在使用php,mysql和ajax开发我自己的聊天。
我有一个页面每5秒加载一次ajax。此ajax验证数据库并检查是否有人想要与已连接的另一个人聊天。
这很好用。我的问题是,当这个在ajax函数中调用的php文件返回时,有人想要聊天时,我需要打开一个弹出窗口。
这是ajax调用的php文件的代码。
// $query = "SELECT * FROM c_solicitud WHERE PARA = ".$_GET['id_corredor'];
// $result = mysql_query($query);
// echo $query;
$solicitud = 0;
while($row = mysql_fetch_assoc($result))
{
$solicitud = 1; //Existen solicitudes para este corredor
$chat_de = $row['de'];
$chat_para = $row['para'];
$nombre_de = $row['nombre_de'];
$nombre_para = $row['nombre_para'];
$input_desde = $chat_de;
$input_para = $chat_para;
//NEED TO OPEN A POP UP HERE.
}
我需要在选择之后打开一个窗口。
我试图在主页面中执行一个函数(调用ajax函数。但是这个javascript不起作用。
这是基本的,我做一个查询,如果这个查询抛出一些结果,我想打开一个弹出窗口。
答案 0 :(得分:4)
PHP是一种服务器端脚本语言。你需要使用JavaScript(大部分时间都在客户端运行)
你会想要使用像window.open这样的东西,这应该有点像这样:
window.open('http://google.com');
请记住,如今大多数浏览器都内置了弹出窗口阻止程序,除非用户过度使用,否则会阻止您的尝试。如果一切都失败了,请使用模态!
总而言之,让PHP向用户返回一个值,然后Javascript将捕获并启动相应的URL。此URL 应该包含告诉PHP打开聊天会话的人所需的任何参数。
答案 1 :(得分:2)
您不会在PHP端弹出窗口,而是在javascript(客户端/浏览器)端执行此操作。
PHP方面只是将结果返回给您,可以是HTML,也可以是JSON,或者......
所以你的PHP看起来像这样:
while($row = mysql_fetch_assoc($result))
{
$solicitud = 1; //Existen solicitudes para este corredor
$chat_de = $row['de'];
$chat_para = $row['para'];
$nombre_de = $row['nombre_de'];
$nombre_para = $row['nombre_para'];
$input_desde = $chat_de;
$input_para = $chat_para;
//NEED TO OPEN A POP UP HERE.
}
$return = 'Message from: ' . $chat_de;
echo $return;
重要提示:此数据将在您的AJAX成功函数中收到,而不会在其他地方收到
例如,如果您的AJAX代码块如下所示:
$.ajax({
type: "POST",
url: "my_php_processor_file.php",
data: 'user=johnadams',
success:function(phpData){
alert(phpData);
}
});
数据“来自:等等的消息”将在变量phpData
中返回 - 因为我们警告该变量,将显示一个包含数据的警告框。
对于弹出窗口,我建议使用jQueryUI的dialog
小部件,因为它易于使用并且是一个很好的起点。
您需要在文档的<head>
标记中添加以下这些代码:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" />
您的文档中需要一个DIV,其中存储注入的HTML(由PHP返回):
<div id="chatresponse"></div>
然后修改后的jQuery / AJAX代码如下所示:
$.ajax({
type: "POST",
url: "my_php_processor_file.php",
data: 'user=johnadams',
success:function(phpData){
$('#chatresponse').html(phpData);
$('#chatresponse').dialog();
}
});
答案 2 :(得分:1)
我建议查看 JSONP 。
通过这种方式,您可以对服务器进行AJAX轮询,服务器决定何时打开包含window.open('http://google.com');
的javascript函数。