是否有与 php 的 urldecode 或 html_entity_decode() 等效的 JavaScript?

发布于 2024-08-11 17:35:08 字数 304 浏览 4 评论 0原文

我在 php 中有一个关联数组,我想将其粘贴到隐藏的表单输入中,以便稍后可以获取 javascript 中的值。由于引用问题,我需要对 json 或 htmlentity 进行 urlencode。但是,一旦我在 javascript 中获得了对象,将其恢复为普通 json 的最简单方法是什么?

或者有更好的方法来解决这个问题吗? AJAX 在这里似乎有点矫枉过正——我宁愿在页面上预先填充数据,而不是设置多个请求。我想我可以将 php 对象写入 php 生成的脚本标记内的页面,但这看起来有点混乱,而且我不确定 [scripts] 是否会在可能使用它的每种可能情况下被解析。

I've got an associative array in php that I want to stick into a hidden form input so that I can later get the values in javascript. Because of quoting issues, I need to urlencode the json, or htmlentity it. Once I have the object in javascript, though, what's the easiest way to get it back to plain ol' json?

OR is there a better way to approach this issue? AJAX seems like overkill here -- I'd rather pre-populate the data on the page, rather than setting up multiple requests. I suppose I could write the php object to the page inside a php-generated script tag, but that seems a bit messy, and I'm not certain that [scripts] will be parsed in every possible situation where this might be used.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寂寞美少年 2024-08-18 17:35:08

如果将数据粘贴在字段中,则可以使用decodeURIComponent 来解码该值。示例:

decodeURIComponent("%5b'hello'%2c%20'world'%5d"); // ['hello', 'world']

另一种方法可能是将 JSON 对象嵌入到 PHP 输出的

<script>setupData(<?= toJSON(['hello', 'world']) ?>)</script>

当页面加载时,将使用文字 ['hello', 'world'] 调用 setupData

If you stick the data within a field you could use decodeURIComponent to decode the value. Example:

decodeURIComponent("%5b'hello'%2c%20'world'%5d"); // ['hello', 'world']

Another approach might be to embed the JSON object in a <script> element in the PHP output. You could even go as far as to make the JSON object an argument to a function that stores it away somewhere.

<script>setupData(<?= toJSON(['hello', 'world']) ?>)</script>

When the page loads the setupData would be called with the literal ['hello', 'world'].

悲凉≈ 2024-08-18 17:35:08

哦。我想我应该先测试一下。我正在使用 dojo,这可以正常工作:

PHP:

$arr = array('nyc'=>'big apple', 'boss'=>'big banana', 'lion'=>'big cat');
$json = htmlentities(json_encode($arr));
echo '<input type="hidden" id="myHidden" value="' . $json . '" />';

Javascript:

var raw = dojo.byId('myHidden').value;
var arr = dojo.fromJson(raw);
for (var i in arr) {
    console.log(i + " => " + arr[i]);
}

[羊皮笑]

Oh. I guess I should have tested first. I'm using dojo, and this Just Works:

PHP:

$arr = array('nyc'=>'big apple', 'boss'=>'big banana', 'lion'=>'big cat');
$json = htmlentities(json_encode($arr));
echo '<input type="hidden" id="myHidden" value="' . $json . '" />';

Javascript:

var raw = dojo.byId('myHidden').value;
var arr = dojo.fromJson(raw);
for (var i in arr) {
    console.log(i + " => " + arr[i]);
}

[sheepish grin]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文