【问题标题】:Getting Ajax requests from php file in a client node.js file从客户端 node.js 文件中的 php 文件获取 Ajax 请求
【发布时间】:2014-03-12 07:13:29
【问题描述】:

所以我正在尝试获取 AJAX 请求以将值返回到我的 node.js 客户端页面。 它正在与不同的端口通信,所以我假设这是导致问题的原因。

我有以下。

client.html 文件

socket.on('connect', function(){

    var user;
    var xmlhttp;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      } 
        xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        user=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","http:localhost:80/getUserSession.php",true);
    xmlhttp.send();
    alert(user);

});

getUserSession.php 文件

<?php
 header('Access-Control-Allow-Origin: *');
 session_start();//start the session
 if(isset($_SESSION['username'])){
   echo $_SESSION['username'];
 }

 ?>

如果我直接运行我的http:localhost:80/getUserSession.php 文件,它会回显当前会话用户。但是,当使用请求时,它会警告该值未定义。 谢谢肖恩

更新 您好,感谢您的回复,我检查了日志文件,首先 ajax 请求确实进入了日志,但是我可以看到它应该是 localhost:80 时会转到 localhost:8080

这是尝试执行 ajax 请求时日志中的内容,请注意 localhost:8080,即使我在 ajax 请求中有 http://localhost:80/getUserSession.php

 127.0.0.1 - - [11/Mar/2014:23:02:33 +0000] "GET /getUserSession.php HTTP/1.1" 200 - "`http://localhost:8080/`" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"

这是我手动访问链接并查看回显用户名时的日志。

 127.0.0.1 - - [11/Mar/2014:23:03:19 +0000] "GET /getUserSession.php HTTP/1.1" 200 5 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"

【问题讨论】:

  • AJAX 请求是否到达服务器?你能在日志文件中找到它吗?
  • 我不明白:Node.js 在所有这些中在哪里?
  • 感谢 cmets 我已经更新了原帖

标签: javascript php jquery ajax node.js


【解决方案1】:

如果您想从数据库中回显用户名,我不会使用您上面列出的 node.js 文件。

相反,我会做一些不同的事情:

1) 创建一个常规 index.html 文件,其中包含对“getUserSession.php”的 AJAX 调用 2)创建一个“Config.php”文件,该文件将使用您想要的值链接到您的数据库 3) 回显正在访问您的数据库的当前会话用户。

AJAX 调用:

 $.ajax(
{
    type: "GET",
    url: 'getUserSession.php',
    datatype: 'json',
    success: function (result) {
        $("#container").html(result); // '#Container' is a DIV that you will put in your index.html file...This is where the user name will be printed on your webpage.
    }

});

Config.php:

<?php
ini_set("display_errors", true);
date_default_timezone_set("America/New_York");     http://www.php.net/manual/en/timezones.php 
define( "DB_DSN", "YOUR DATABASE HOST AND DATABASE NAME INFORMATION"); 
define( "DB_USERNAME", "YOUR USER NAME");
define( "DB_PASSWORD", "YOUR USER PASSWORD");
define("ADMIN_USERNAME", "YOUR ADMIN USER NAME");
define("ADMIN_PASSWORD", "YOUR ADMIN PASSWORD");

function handleException ( $exception) {
echo "Sorry, a problem occurred.  Please try later.";
error_log( $exception->getMessage() );
}

set_exception_handler('handleException');


?>

getUserSession.php:

<?php
require("config.php");
session_start();

header('Access-Control-Allow-Origin: *');

echo DB_USERNAME;

?>

【讨论】:

  • 感谢您的回复,但仍然不高兴,我认为这可能是不同端口之间的跨浏览器请求问题有什么想法吗?
猜你喜欢
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多