2015-12-06 13 views
1

我的JavaScript發送一些數據給php,我的php代碼試圖解析它,但它一直失敗! PHP接收數據並將其放置在文本區域,但在解析之前未格式化。任何人可以告訴我如何正確格式化接收到的數據,所以它是可通過的?提前致謝。如何解析JavaScript DOM使用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' ]; 
} 

$碼2 = $ _POST [ 'DOM'];通過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

什麼是您的JavaScript代碼?似乎你正在尋找url-endoced字符串,你可以發送只是JSON。 – jcubic

+0

顯示您的實際AJAX請求(標題和正文)或相應的JS代碼 – hindmost

+0

感謝您的回覆。我編輯了我的第一篇文章,其中包括書籤javascript代碼。你認爲問題是與JavaScript或PHP的一部分? – user1788736

回答

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);