質問

投稿者:M
登録日:2025年4月8日(火)

配列を setTHValue() で渡すと文字列になってしまう問題について

PHP側でAPIレスポンスの配列データ(JSON)をフロント側(HTML/JavaScript)に渡そうとしています。 PHP側で取得した検索結果(配列)を、JSON形式でJavaScriptに渡したいのですが可能なのでしょうか? 以下の方式を試してみたのですが、うまくできない状態です。 json_encode($response_items, JSON_UNESCAPED_UNICODE) → 500エラー base64_encode(json_encode(...)) → 500エラー 配列のまま渡す → HTML側では文字列化されてしまい、JSONとして扱えない ご教授いただければ幸いです。 よろしくお願いいたします。

PHP
    // json形式を配列に変換して表示
    $response_data = json_decode($response , true);
    $response_items = $response_data['items'];

    // 検索結果をbodyに渡す
    $selectData = $response_items;
    $SPIRAL->setTHValue("selectData" ,$selectData);
HTML
<input type="hidden" id="selectData" th:value="${cp.result.value['selectData']}">

javascript
const rawData = document.querySelector("#selectData").value;
let selectData;

try {
    selectData = JSON.parse(rawData);
    console.log("Parsed selectData:", selectData);
} catch (e) {
    console.error("JSONパースエラー:", e);
}
更新日:2025年4月11日(金)
いいね

コメント

  • ソースコードの添付ありがとうございます。 添付いただいたPHPのソースコードに記載のsetTHValue()関数ですが、 こちらはPHP実行結果の値を渡す関数になりまして、 配列を渡したい場合はsetTHValues()関数をご使用ください。 json_decodeで配列に変換いただき、setTHValues()関数に配列を指定いただくことで、bodyに渡すことが可能です。 以下のサポートサイト記事にも記載しておりますので、ご参考いただけますと幸いです。 ▼PHP>setTHValues($array) https://support.spiral-platform.com/function/function-site-manage/6898.html#setTHValuesarray

    • いいね
    2025年4月9日(水)
  • M

    表題の件につきまして、ご回答をいただきありがとうございます。 サポートサイト記事も参考に作成をしてみます。 ご協力ありがとうございました。

    • いいね
    2025年4月11日(金)
  • ご確認いただきましてありがとうございます。 また何かございましたら、お気軽にクエスチョンボードをご活用ください。 引き続き、よろしくお願いいたします。

    • いいね
    2025年4月11日(金)