退屈なコードを読む必要はありませんが、何が起こっているのかを簡単に要約しましょう。ドキュメントが読み込まれると、XHR リクエストが jQuery ポスト関数を介して送信されます。post は、別の php ファイルを呼び出していくつかの文字列を処理し、それを返す PHP ファイルに POST ヘッダーを送信します。最後に、エコーされた json_encode 関数が文字列を jQuery post 関数に返し、jQuery はそれを DOM に操作します。
JavaScript のポスト関数によって返される結果は次のとおりです。
<option value="\"auto2\"">auto2<\/option></option>
それらすべてのエスケープ文字を参照してください。echo
関数を使用する代わりに、PHP 側で結果をエコーするだけで、次のjson_encode
ように返されます。
<option value="auto">auto</option>
他の特殊文字なし。これが望まれることです。私の質問は、これを使用しても大丈夫ですか? そして、なぜjson_encode
特殊文字を追加するのですか? json_encode
他の文字を返さずに使用する方法はありますか?
編集
JS
$(document).ready(function() {
var PROCESSOR_FILE = "http://address/include/processor.php";
$.post(PROCESSOR_FILE, {"task": "verticalSelect"}, function(data) {
$("#verticalSelect").html(data);
});
});
PHP
$IMEXporterpath = dirname(__FILE__);
$IMEXporterFile = $IMEXporterpath . "/IMEXporter.class.php";
if (isset($_REQUEST["task"]))
$task = $_REQUEST["task"];
else
$task = "";
require_once $IMEXporterFile;
$IMEXp = new IMEXp();
$result = $IMEXp->returnHtml($task);
echo json_encode($result);
もっと PHP
public function returnHtml($element) {
return $this->returnHtml_HTML($element);
}
private function returnHtml_HTML($element) {
if($element == "verticalSelect") {
$dbTables = $this->get_Tables();
$nbTable = count($dbTables);
for ($a = 0; $a < $nbTable; $a++) {
$ZHTML .= '<option value="'.$dbTables[$a].'">'.$dbTables[$a].'</option>';
}
}
return $ZHTML;
}