如何使用php解析javascript DOM发布数据?

时间:2015-12-06 15:42:32

标签: javascript php json urldecode

我的JavaScript将一些数据发送到php,我的php代码试图解析它但它一直在失败! php接收数据并将其放在文本区域,但在解析之前格式不正确。任何人都可以告诉我如何正确格式化接收的数据,以便它可以通过?提前谢谢。

javascript bookmarklet;

javascript: (function() {
    var d = window.open('about:blank'),
        a = d.document;
    a.write('<!DOCTYPE html><html><head><title></title></head><body></body></html>');
    a.close();
    var b = a.body.appendChild(a.createElement('form'));
    b.setAttribute('method', 'post');
    b.setAttribute('action', 'http://mywebsite.com/test.php');
    var c = b.appendChild(a.createElement('input'));
    c.setAttribute('type', 'hidden');
    c.setAttribute('name', 'DOM');
    c.setAttribute('value', encodeURIComponent(document.documentElement.innerHTML));
    b.submit()
})()

php代码:

    $code2 = $_POST['DOM'];
    $data = json_decode($code2, true);
    print_r($data['items']);

foreach( $data['items'] as $item ) {
echo "id:".$item[ 'id' ];
echo "name:".$item[ 'name' ];
}

$ code2 = $ _POST [&#39; DOM&#39;];通过php收到的数据如下:

 %7B%0A%20%20%20%20%22success%22%3A%201%2C%0A%20%20%20%20%22items%22%3A%20%5B%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22cherry%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22img%22%3A%20%22images%5C%2Fitems%5C%2F213433243324342cherry_fruits_logo.png%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22item_url3%22%3A%20%22http%3A%5C%2F%5C%2Fawebsite.com%5C%2Fdo%3Fsession%3D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22cat_id%22%3A%20%2255%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22item_url2%22%3A%20%22http%3A%5C%2F%5C%2Fawebsite.com%5C%2Fdo%3Fsession%3D234123423432143242%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22item_url%22%3A%20%22http%3A%5C%2F%5C%2Fawebsite.com%5C%2Fdo%3Fsession%3D23423524353454234252%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%222%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22mango%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22img%22%3A%20%22images%5C%2Fitems%5C%2F968756756mango_fruits_logo.png%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22item_url3%22%3A%20%22http%3A%5C%2F%5C%2Fawebsite.com%5C%2Fdo%3Fsession%3D34524358098019234123%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22cat_id%22%3A%20%2255%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22item_url2%22%3A%20%22http%3A%5C%2F%5C%2Fawebsite.com%5C%2Fdo%5C%2Fsession%3D34524358098019234123%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22item_url%22%3A%20%22http%3A%5C%2F%5C%2Fawebsite.com%5C%2Fdo%3Fsession%3D34523454364362345134%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A

实际数据应该在php上看起来像这样:

{
    "success": 1,
    "items": [{
                "id": "1",
                "name": "cherry ",
                "img": "images\/items\/213433243324342cherry_fruits_logo.png",
                "item_url3": "http:\/\/awebsite.com\/do?session=",
                "cat_id": "55",
                "item_url2": "http:\/\/awebsite.com\/do?session=234123423432143242",
                "item_url": "http:\/\/awebsite.com\/do?session=23423524353454234252"
            }, {
                "id": "2",
                "name": "mango",
                "img": "images\/items\/968756756mango_fruits_logo.png",
                "item_url3": "http:\/\/awebsite.com\/do?session=34524358098019234123",
                "cat_id": "55",
                "item_url2": "http:\/\/awebsite.com\/do\/session=34524358098019234123",
                "item_url": "http:\/\/awebsite.com\/do?session=34523454364362345134"
            }

1 个答案:

答案 0 :(得分:0)

您的数据似乎是UTF-8编码的以及因此要解码它还允许使用utf8_decode()

$str = '%7B%0A%20%20%20%20%22success%22%3A%201%2C%0A%20%20%20%20%22items%22%3A%20%5B%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22cherry%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22img%22%3A%20%22images%5C%2Fitems%5C%2F213433243324342cherry_fruits_logo.png%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22item_url3%22%3A%20%22http%3A%5C%2F%5C%2Fawebsite.com%5C%2Fdo%3Fsession%3D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22cat_id%22%3A%20%2255%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22item_url2%22%3A%20%22http%3A%5C%2F%5C%2Fawebsite.com%5C%2Fdo%3Fsession%3D234123423432143242%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22item_url%22%3A%20%22http%3A%5C%2F%5C%2Fawebsite.com%5C%2Fdo%3Fsession%3D23423524353454234252%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%222%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22mango%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22img%22%3A%20%22images%5C%2Fitems%5C%2F968756756mango_fruits_logo.png%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22item_url3%22%3A%20%22http%3A%5C%2F%5C%2Fawebsite.com%5C%2Fdo%3Fsession%3D34524358098019234123%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22cat_id%22%3A%20%2255%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22item_url2%22%3A%20%22http%3A%5C%2F%5C%2Fawebsite.com%5C%2Fdo%5C%2Fsession%3D34524358098019234123%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22item_url%22%3A%20%22http%3A%5C%2F%5C%2Fawebsite.com%5C%2Fdo%3Fsession%3D34523454364362345134%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A';

$result = utf8_decode(urldecode($str));

print_r($result);