1

編集:

解決しました。誰かが答えをコメントしましたが、その後削除しました。お恥ずかしいことに、この問題は、2 つの json_encode 行の後にセミコロンを追加することで修正されました。string1 が終了セミコロンなしで機能し、string2 が機能しなかった理由はまだわかりませんが、機能するので…成功ですか?

/編集

こんにちは…ここではかなり初心者のプログラマーです。

PHP 内で、データベースから 2 つの配列を取得しています。これはうまくいきます。次に、各配列を文字列に分解します。これもうまくいきます。

同じファイルの後半、コードの JavaScript セクション (jQuery を使用) で、次のようにします。

string1 = <?php echo json_encode($string_1);?>
string2 = <?php echo json_encode($string_2);?>

string1 のエンコードは完全に機能します... string2 行を完全にコメントアウトする限り。それは私のページを殺します。

文字列が utf8 でエンコードされていることを確認してみました。バックスラッシュやその他の問題のある文字がないことを確認してみました。現在、可能な限り問題がないように設計されたダミー コードを入手しましたが、それでも機能しません。

その骨組みバージョンがこちら。

PHP:

$array1 = array();
$array2 = array();


$i = 1;
while($row = mysqli_fetch_assoc($query_result)) {
   $array1[$i] = $row['column1'];
   $array2[$i] = $row['column2'];
   $i++;
}

$string1 = implode(",", $array1);
$string2 = "oh_come_on_why_doesnt_this_work"; // implode(",", $array2);

そして JS/HTML/JQuery:

var string1;
var string2;

$.getScript("js/set_functions.js", function(){ loadedScript() });

function loadedScript() {

    string1 = <?php echo json_encode($string1);?>
    string2 = <?php echo json_encode($string2);?>
    // string2 = <?php echo "'" . $string2 . "'";?> doesn't work either

    alert(string1); // works if I comment out both string2 = … lines
    alert(string2); // displays "undefined" if the first string2 = … line is commented…
    // …out, doesn't display at all if it isn't

}

立ち往生してください助けてください。

私のコードをもっと見る必要がある場合、またはこの質問をより良くするために他にできることがあれば教えてください。ありがとう。

PS: 私は良いプログラマーではありません。この問題を解決する代わりに、私の他の悪いコーディング習慣を修正しないでください。ありがとう!

編集: 申し訳ありませんが、Joe Fraumbach への返信で、それは私のコピー貼り付けのエラーでした。私は実際に $array2 = array(); と宣言しました。

4

2 に答える 2

2

編集: JS 割り当て式の最後にセミコロンがありません。場合によっては解析の問題が発生します。両方の行が単一の複数割り当て式の一部になる可能性があります。それらを追加してみて、問題が解決するかどうかを確認してください。

string1 = <?php echo json_encode($string1); ?>;
string2 = <?php echo json_encode($string2); ?>;

json_encode は UTF-8 でのみ機能することに注意してください。そのため、入力が UTF-8 であるかどうかわからない場合は、フィードする文字列を utf8_encode() します。そうしないと、文字列全体が PHP で null としてレンダリングされます (連結時に空の文字列に変換されます)。

于 2013-09-10T18:30:17.857 に答える
0

$array2定義されることはありません。を定義し$array1 = array();ました。についても同じことを行い$array2ます。

于 2013-09-10T16:35:33.313 に答える