2013-01-21 59 views
3

以下PHP函數輸出JS:最好的方式來編碼JavaScript與PHP的Ajax?

function dothething($data){ 
    $res = " 
     <div id=\"blah\"> 
      Here's some stuff, ". $data['name'] ." 
     </div>"; 
    echo "$('#container').html('". $res ."');"; 
} 

此功能是通過jQuery的$.ajax()調用,使用dataType: 'script' ......因此無論是echo版運行像一個JS的功能。當然還有更多,但我的問題與編碼有關。當$res包含換行符或撇號時,ajax將失敗。所以加入這個echo上面似乎是工作現在:

$res = str_replace("\n", "\\n", addslashes($res)); 

這是格式化PHP變量$res產生有效的JavaScript適合於Ajax的最佳方式?

我還有什麼要補充的嗎?

+3

是的,你應該使用'json_encode()'如果你想成爲一定。 –

回答

3

在你的情況我會使用json_encode()在別的:

echo "$('#container').html(" . json_encode($res) . ");"; 

當應用到一個字符串值,它會自動用雙引號將其封裝和逃避任何東西里面,否則將導致解析錯誤。

+0

現在\ r和\ n是逃脫? –

+0

@TomSarduy爲什麼會這樣呢? –

+0

太棒了!這處理每個奇怪的異常和故障。謝謝:) – neokio

0

試試這個,

if(count($result)>0) { 
    $status = 0; 
} else { 
    $status = 1; 
} 

$json['status'] = $status; 
$json['result'] = $output; 
print(json_encode($json));