2014-04-26 22 views
0

我們試圖避免iframe,而是使用javascript,jquery,jsonp和基於php的web小部件來顯示來自我們的跨域html網站的內容。我們希望在小部件中按原樣顯示完整頁面,但是從我們閱讀的所有教程中,我們需要提供JSON數據類型才能使跨域JSONP正常工作。如何使用JSONP顯示純HTML

下面是我們嘗試 -

主要JS

function render() { 
    jQuery.getJSON(serverFQDN + '/widget.php?callback=?', { 
    install_url: window.location.href 
    }, serverResponse); 
} 

function serverResponse(data) {  
    jQuery(container).html(data.html); 
} 

Widget.php

<?php echo $_GET['callback'] ?>({ 
    "html": "<?php echo 'hello'; ?>" 
}); 

我們能夠顯示簡單的HTML實體,如 -

<?php echo $_GET['callback'] ?>({"html": "<li>TEST</li>" 

} );

但不是完整的頁面即

<?php 
$url = "http://localhost/page.html"; 
$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 
$output = curl_exec($curl); 
curl_close($curl); 
$output = json_encode($output); 
echo $_GET['callback'] ?>({"html": "<?php echo $output; ?>" 

});

回答

0

你應該使用cURL或Firebug來檢查,但我認爲你是雙JSON編碼你的HTML。

它也不清楚爲什麼你寫的:的

echo $_GET['callback'] ?>({"html": "<?php echo $output; ?>" }); 

代替

echo $_GET['callback'] ?>({"html": $output }); 

編輯:沒關係,我有它。你是JavaScript編碼的JSON編碼 - 但你有一套額外的引號!

如果$輸出爲"<li>TEST</li>",那麼你所創建的文件是

jsonpCallback({"html" : ""<li>TEST</li>""}); 

呃,我想。就像我說的,使用cURL或Firebug來檢查實際輸出。