【问题标题】:PHP & Jquery - Sending data between the client and serverPHP & Jquery - 在客户端和服务器之间发送数据
【发布时间】:2013-02-25 08:02:54
【问题描述】:

我正在尝试编写将文件路径发送到服务器的代码,使用 php 将每一行解析为一个数组并将该数组返回给客户端以对其进行处理。

当我运行我的程序时,它看起来不像是在处理 php 文件,因为我为测试目的而输入的 echo 从未被调用过。

我对 PHP 一无所知,非常感谢您的帮助!

jquery:

$("#codelines").load('ParsePHPForDisplay.php?filename=DBManager.php');

    console.log($('#codelines'));
    pieces = $("#codelines").html().split("\n");

PHP:

<?php

class Parsing
{
    function ParseStuff()
    {
        echo('hi');
        $parsedFile = file($_REQUEST['filename']);
        echo($_REQUEST['filename']);
//        foreach ($parsedFile as $parsedFile_num => $parsedFile) {
//            echo"Line #<b>{$parsedFile_num}</b> : " .htmlspecialchars($parsedFile) . "<br/>\n";
//        }
        return $parsedFile;
    }
}

?>

我的一段 HTML:

<section id="codestuff">
    <h2>Code Lines</h2>
    <pre id="codelines">
    </pre>
</section>

编辑:

这是我现在的 PHP:

<?php


        echo('hi');
        $parsedFile = file($_REQUEST['filename']);
        echo('test');
        echo($_REQUEST['filename']);
//        foreach ($parsedFile as $parsedFile_num => $parsedFile) {
//            echo"Line #<b>{$parsedFile_num}</b> : " .htmlspecialchars($parsedFile) . "<br/>\n";
//        }
        return $parsedFile;



?>

我收到此错误:

解析错误:语法错误,意外的 T_STRING,在 5
行的 ParsePHPForDisplay.php 中需要 T_FUNCTION。

【问题讨论】:

  • 没有代码调用 ParseStuff()...
  • $myParse = new Parsing(); $myParse-&gt;ParseStuff(); 虽然为了你的目的,你真的不需要在课堂上完成它。好像你来自java背景。然而,如果你只打算拥有一个函数,你不妨把它放在一个类范围之外,这样它就可以在页面加载时运行,而无需调用它。
  • Jon 的代码应该在其中某处。必须实例化该类,然后必须调用该函数。
  • 有一个更大的问题,马特和乔恩。他说他正在尝试将文件上传到服务器。我看到的 PHP 只是通过文件名加载一个已经存在的文件。
  • @user1950929 干得好,注意了,她没有上传文件,只是传递了一个文件名。

标签: php jquery


【解决方案1】:

好吧,我相信你应该使用的 PHP 是:

<?php
  $file = file_get_contents($_REQUEST['filename']);
  echo $file;
?>

但在发布之前,您应该检查安全问题,例如用户从其他目录加载文件,在文件名中使用 ../,也不要获取 php 文件等。

【讨论】:

    【解决方案2】:

    我不明白您为什么需要 PHP 将文件解析为数组...只需将整个内容作为一个大字符串发送,然后您可以将其拆分为行数组,如果您需要, 在 Javascript 中,一旦你从服务器获取它(例如 myString.split(/\n\r|\n|\r) )。

    然后,从 PHP 中,你可以这样做:

    readfile($_REQUEST['filename']); exit;

    (请注意,这不安全;您应该在 PHP 代码中添加一些条件,以便它只能输出特定目录中的文件,例如。请参阅 PHP 的 explode 函数,该函数将帮助您将文件名拆分为数组使用DIRECTORY_SEPARATOR 作为分隔符)。

    请注意,在 PHP 中,return 语句不会导致任何输出。很多时候你会通过returns 一个值的函数获得你需要的值,但你仍然需要echoprint 它。

    【讨论】:

      猜你喜欢
      • 2022-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 2011-02-10
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多