【问题标题】:JS array to PHPJS数组转PHP
【发布时间】:2012-10-06 19:55:46
【问题描述】:

我有一个从特定设备生成的 output.js 文件,其中包含 Array:

var OUT=new Array (0x80,0x00,0x40,0x0026,0x0011,0x0014,0x0013,0x0018,0x0017,0x03FD,0x0116)

如何使用 PHP 访问该数组,以便在任何位置轻松打印指定的 Array[x]:

print $OUT[4];

使用简单的 JS,我可以做到:

document.write(OUT[4]);

如果我也可以像 txt 文件一样用 PHP 处理 output.js,然后拆分并“像数组一样做”,但我认为可以正确使用它.. ^_^

对此有任何提示或建议吗? :)

谢谢!

【问题讨论】:

  • 你在页面上使用 jQuery 吗?
  • 在我的 PHP 页面上没有,因为我还不太擅长。但如果它需要得到我想要的,我会的。
  • 也不能修改 output.js 文件。
  • @45RPM 使用 json,最好的选择

标签: php javascript arrays


【解决方案1】:

如果您想直接使用 PHP 获取文件,那么您可以编写自定义解析器(如果您相信文件格式一致,则使用正则表达式)或通过 interfacing with a JavaScript engine

否则,假设 JavaScript 在网络浏览器中运行……

最简单的方法是使用createElementappendChild 同时循环一个数组来创建一个form 元素,该元素包含一个hidden 为数组的每个元素输入(带有名称例如foo[] 来满足PHP 用来填充$_POST 和朋友的算法)然后submit() 表单。

或者,您可以将数组序列化为字符串(例如,如果您知道数据中没有逗号,则用逗号分隔一个)并使用它创建一个查询字符串 (var qs = "?foo=" + encodeURIComponent(serialised_array);),然后使用 @987654322 传递它@。

【讨论】:

  • 谢谢! createElementappendChild 帮了大忙! :)
【解决方案2】:

您可以使用 json 来执行此操作

var jsonString  = JSON.stringify(OUT);

然后

document.getElementById('IdOfYourFormInputField').value = jsonString;

// 隐藏元素类型

现在,当您提交表单时,您将在 $_POST 字段中获得 json 字符串

所以你可以像这样解码它

$phpArray = json_decode($_POST['NameOfYoutInputEleMent']);

就是这样!!!

【讨论】:

  • 不使用表格怎么办?
  • @ChristianNikkanen 您可以直接通过 ajax 将其发布到您的 php 文件中,而无需使用任何形式
【解决方案3】:

最简单的方法是使用像 jQuery 这样的库,而不是自己动手......

<head>
<script src="http://code.jquery.com/jquery.min.js">
....

然后在您计算数据时,将其发布到 PHP 服务器

var OUT = new Array (0x80,0x00,0x40,0x0026,0x0011,0x0014,0x0013,0x0018,0x0017,0x03FD,0x0116);
$.ajax({
    url: 'http://www.example.com/receiver.php'  //change example.com to your server
    ,type: 'POST' //use POST so don't have to worry about URL length
    ,data: {out: OUT} //pass contents of 'OUT' in variable 'out'
    ,dataType: 'json' //use JSON formatting of data
    ,error: function() { 
        alert("Failed to contact server"); 
    }
    ,complete: function() {
        alert("Finished sending data to server.");
    }
});

在receiver.php中

$OUT = json_decode( $_POST['out'] ); // 'out' matches the parameter name in jQuery Ajax call
print_r( $OUT ); //print contents of array $OUT 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多