0

我正在使用 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 不起作用。

这是基本的,我做一个查询,如果这个查询抛出一些结果,我想打开一个弹出窗口。

4

3 回答 3

4

PHP 是一种服务器端脚本语言。您需要使用 JavaScript(大部分时间在客户端运行)

你会想要使用类似window.open的东西,它应该像这样工作:

window.open('http://google.com');

请记住,如今大多数浏览器都内置了弹出窗口阻止程序,并且除非被用户覆盖,否则会阻止您的尝试。如果一切都失败了,请使用模态!


总结一下,让 PHP 向用户返回一个值,然后 Javascript 将捕获并启动相应的 URL。该 URL包含您需要告诉 PHP 与谁打开聊天会话所需的任何参数。

于 2013-09-11T23:53:17.040 回答
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);
    }
});

数据“Message from: etc etc”将在变量中返回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();
    }
});
于 2013-09-11T23:56:34.203 回答
1

我建议调查JSONP

这样,您可以让 AJAX 轮询服务器,然后服务器决定何时打开包含window.open('http://google.com');.

于 2013-09-12T01:30:40.733 回答