当前位置: 首页 > 知识库问答 >
问题:

从服务器读取textfile(Json)并发送到客户端(Javascript)

东郭宏深
2023-03-14

我在使用“json.stringify”和“json.parse”表示字符串时遇到了问题。该应用程序通过Javascript使用客户端浏览器通过PHP从服务器读取文本文件(JSON字符串)。

"\r\n\r\n\r\n\t\r\n\r\n\r\n\r\n\r\n{\"employees\":[{\"firstName\":\"John\",\"lastName\":\"Doe\" },{\"firstName\":\"Anna\",\"lastName\":\"Smith\" },{\"firstName\":\"Peter\",\"lastName\":\"Jones\" }]}\r\n\r\n"

>

  • 如果不使用“stringify”,它将与文本文件中的原始文本打印相同。
  • 如果我使用“json.stringify”,那么使用“json.parse”将显示如下错误:

    JSON中JSON.parse()位置0处的意外标记<

    代码如下:

    {“雇员”:[{“名”:“约翰”,“拉斯特名”:“多伊”},{“名”:“安娜”,“拉斯特名”:“史密斯”},{“名”:“彼得”,“拉斯特名”:“琼斯”}]}

     <!DOCTYPE html>
        <html>
        <head>
        <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>  
    
        <script>
        var text = '{"employees":[' +
        '{"firstName":"John","lastName":"Doe" },' +
        '{"firstName":"Anna","lastName":"Smith" },' +
        '{"firstName":"Peter","lastName":"Jones" }]}';
    
        function printEmployee() {  
            obj = JSON.parse(text);
    
            var selEmployee = document.getElementById("selEmployee");
    
            document.getElementById("demo").innerHTML =
            obj.employees[selEmployee.selectedIndex].firstName + " " + obj.employees[selEmployee.selectedIndex].lastName;   
        }
    
        function postToPhp() {
            var dataString = JSON.stringify(text);
    
            $.post("processJson.php",
                {
                  dataString
                },
                function(data,status){
                    alert("Data: " + data + "\nStatus: " + status);
                });
        }
    
        function postAsyncGet()
        {
            getToPhp()
                .then(viewGetResult);   
        }
    
        function getToPhp() {
    
            var dataString;
    
            $.get("readJson.php",
                {
                  dataString
                },
                function(data,status){
                    alert("Data: " + data + "\nStatus: " + status);
                    viewGetResult(data);
                });
        }
    
        function viewGetResult(dataString) {
    
            var jsonstr = JSON.stringify(dataString.trim());
            //var obj = JSON.parse(dataString);
            document.getElementById("demo").innerHTML = dataString;
    
            var selEmployee = document.getElementById("selEmployee");
    
            //document.getElementById("demo").innerHTML =
            //obj.employees[selEmployee.selectedIndex].firstName + " " + //obj.employees[selEmployee.selectedIndex].lastName;   
        }
    
        </script>
        </head>
    
        <body>
    
        <h2>Create Object from JSON String</h2>
    
        <label>
        Select an Employee:
        </label>
    
        <select id = "selEmployee">
           <option value = "1" selected="selected">1</option>
           <option value = "2">2</option>
           <option value = "3">3</option>
        </select>
    
        <p><a href="#" onclick="printEmployee();">Print Me!</a></p>
        <p><a href="#" onclick="postToPhp();">Post Me to PHP!</a></p>
        <p><a href="#" onclick="getToPhp();">Get from PHP!</a></p>
    
        <p id="demo"></p>
    
        </body>
        </html>
    
    <!DOCTYPE html>
    <html>
    <head>
    <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>  
    </head>
    
    <body>
    
    <?php
    $obj = json_decode($_POST["dataString"]);
    
    echo $obj->var;
    
    $myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
    fwrite($myfile, $obj );
    fclose($myfile);
    ?>
    
    </body>
    </html>
    
  • 共有1个答案

    冀崇凛
    2023-03-14

    您可以在https://github.com/kehkok/php_server-json-javascript_client#php_server-json-javascript_client找到完整的解决方案

    快乐分享。

     类似资料:
    • 我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s

    • 我正在尝试通过 tcp 连接远程执行程序,我想在客户端之间实时共享标准输出和标准输出 我有以下没有错误处理的测试服务器:p我知道,目前我无法执行带有参数的程序,但这很容易处理:) 你看,我尝试与 c.Write() 共享标准输出,但这不起作用。 我认为cmd.Stdin的另一个问题将与Stdout的问题相同。此时我没有实现任何标准函数。 有人能给我一个关于这个函数的提示或示例代码吗?

    • 我试图发送数据类型ArrayBuffer在json到我的服务器使用socket.io如下: 在服务器端,当我在套接字中收到“记录”事件时,我从JSON获取数据,并将其保存在名称文件中,如下所示: 我正在使用require('wav')) 我做错了什么?我不能像这样在插座中发送ArrayBuffer吗。伊奥?

    • 问题内容: 首先,我将请求的文件从服务器发送到客户端,然后再将文件的计算出的sha从服务器发送到客户端,以便客户端可以检查发送文件和接收文件中的sha是相同的。 我设法发送了文件,但是当我尝试也发送sha(这是一个变量)时,我收到一个错误消息(我相信sha也已添加到文件内容中) 如何分别发送? 和客户: 问题答案: 您应该重新设计应用程序的工作方式: 首先,服务器将文件大小发送给客户端 客户端读取

    • 我正在Unity中制作一个游戏,我试图将数据从客户端发送到服务器并返回到客户端(试图保存实例),但当我收到数据并尝试将数据发送回客户端时,它表示udp客户端未连接。 它成功地将数据从我的Unity客户端发送到服务器,但一旦它到达那里,套接字就会断开连接,我就无法返回任何内容。正如你所看到的,我试图设置一些多播选项,但它似乎不能正常工作。 客户: 服务器: 因此,服务器中UdpClient的实例会保

    • 从server-A(可通过静态IP全局访问)开始,我将UDP套接字绑定到0.0.0.0:25000。 然后,在(住宅)NAT 后面使用客户端 A,我将 UDP 套接字绑定到 0.0.0.0:25000。然后,客户端 A 将数据包发送到服务器 A。 服务器 A 接收数据包。服务器 A 记录远程套接字 K,数据包从中 NAT 开始。服务器 A 向 K 发送数据包,目的是 NAT 将数据包转发到客户端