2015-11-20 60 views
1

我想用php標記之外的json編碼使用一個ajax調用來更新兩個div。 我熟悉Update two divs with one AJAX response,但將有可能做同樣的事情,但有數據 < PHP?>如何使用json_encode與PHP標記之外的html和php混合使用

相反回聲-ING Ajax響應的我已經關閉PHP和使用普通的HTML像這裏的例子是代碼服務器端:

<?php 
//here some code that cheks some stuff 
var $somvariable="Ipsum"; 
?> 
<p>Lorem Lorem <?php echo $somvariable ; ?></p> 

,然後在阿賈克斯功能我更新的div喜歡:

success:function(data, textStatus, jqXHR) 
{ 
//data: return data from server 
$('#divid').html(data); 
} 

現在想象一下,我必須使用json_encode創建ŧ WO是更新兩個div變量,所以我可以做:??

success:function(data, textStatus, jqXHR) 
{ 
$('#dividone').html(data.one); 
$('#dividtwo').html(data.two); 
} 

和我的代碼外< PHP>是到大,未免太耗時它轉換成普通字符串的時間。 我該如何做這項工作?我的猜測是使用原始json,但是如何? 明顯不一樣:

<?php 
echo json_encode(array(
    'one' => '?><p>Lorem Lorem <?php echo $somvariable ; ?></p><?php', 
    'two' => '?><p>Lorem <?php echo $somvariable2 ; ?></p><?php' 
)); 
?> 

不會工作,但我希望這說明了什麼我盡力去完成。

回答

0

有了一些研究我已經設法弄清楚了。 ob_get_clean()ob_start()是我所需要的。

<?php ob_start(); ?> 
<div>First huge mix of php and html goes <?php echo "here"; ?></div> 
<?php $one= ob_get_clean(); 
ob_start(); ?> 
<div>Second huge mix of php and html goes <?php echo "here"; ?></div> 
<?php $two= ob_get_clean(); 
echo json_encode(array(
    'one' => $one, 
    'two' => $two 
)); ?> 

在阿賈克斯我用

success:function(data) 
{ 
$('#dividone').html(data.one); 
$('#dividtwo').html(data.two); 
} 
1

可能是你需要設置頁眉在PHP

header('Content-Type: application/json'); 

所以你的PHP代碼應該是這樣的

<?php 
header('Content-Type: application/json'); 
echo json_encode(array(
    'one' => '<p>Lorem Lorem '.$somvariable.'</p>', 
    'two' => '<p>Lorem '.$somvariable2.'</p>' 
)); 
?> 

和AJAX使用

success:function(data) 
{ 
    $('#dividone').html(data.one); 
    $('#dividtwo').html(data.two); 
} 
+0

這是有趣的 - 你可以提供例如簡單的JSON與創建這樣兩個變量? 所以像<?php header('Content-Type:application/json'); ?>然後如何格式化變量? –

+0

@GrzegorzZieliński我實際上在我的代碼中以這種方式使用它..但我沒有一個生動的例子..只是用你的代碼替換它並測試它..並且看到更新的答案 –

+0

問題是

Lorem Lorem <?php echo $ somvariable; ?>

確實是一個更大的HTML/PHP代碼。這就是爲什麼它會花費時間將其轉換爲正常的PHP字符串,就像你的迴應。這就是爲什麼我試圖找到一種方法來做到這一點以外的PHP - 也許在原始JSON。 –