簡體   English   中英

從外部php文件將php數組傳遞給javascript函數

[英]Passing php array to javascript function from external php file

我正在基於來自sqlite數據庫的數據自動填充html表單。 我正在使用此網站的代碼的修改版本,它的基本功能可以正常運行。 主要輸入元素調用“ onkeyup”,這是一個名為“ lookup”的javascript函數,該函數依次調用外部php腳本,該腳本傳遞當前字符串以查詢數據庫。

該腳本返回一個字符串以更新輸入表單:

echo '<li onClick="fill(\''.$result->value.'\');">'.$result->value.'</li>';

javascript函數“ fill”如下:

function fill(thisValue) {
    $('#inputString').val(thisValue);
    setTimeout("$('#suggestions').hide();", 200);

“ #inputstring”只是一個輸入元素。

我想做的而不是返回字符串的方法是返回一個數組,並在“ fill”函數內部對其進行解析,以將不同的值分配給html中的不同元素。 問題是,要將php數組傳遞給javascript,我必須以某種方式進行轉換。 我已經嘗試過像在堆棧上多次建議的那樣使它成為json字符串,但是對於我想是引號的問題,它總是返回null值。 我試過了:

$valuetopass = json_encode($query_result);

沒有

echo '<li onClick="fill('.$valuetopass.');">'.$query_result['text'].'</li>'; 

並帶有引號

回聲``。$ query_result ['text']。'';

而且都失敗了。

我知道,類似的問題已經被問12 ,ECC ......但所有的答案建議分配JavaScript變量時嵌入PHP。 在我的情況下,從函數“ lookup”調用php,並從該php腳本中返回函數“ fill”。

我如何從php內部產生一個包含json字符串的字符串,該字符串的格式可以傳遞給“ fill”函數?

或者,如何解決這個問題,使我根本不需要這樣做?

您的JSON字符串可能包含" ,因此,如果不加處理將其插入onClick="fill(...);"時,當然會遇到語法問題。

在這種情況下,使用PHP的htmlspecialchars應該可以解決此問題。


從長遠來看,您可能希望更多地關注代碼和數據的分離。
使用內聯HTML屬性附加事件處理程序有點“老派”,如今,應該使用addEventListener resp從腳本內部完成。 JS框架可能為此提供的任何包裝方法。 然后,例如可以將JSON數據放入自定義數據屬性中,以便腳本可以從那里讀取數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM