现在不必阅读无聊的代码,让我简单总结一下发生了什么。当文档加载时,一个 XHR 请求通过 jQuery post 函数发出。该帖子将一个 POST 标头发送到一个 PHP 文件,该文件调用另一个 php 文件来处理一些字符串并返回它。最后,一个回显的 json_encode 函数将字符串返回给 jQuery post 函数,然后 jQuery 将其操作到 DOM 中。
JavaScript 的 post 函数返回的结果是这样的:
<option value="\"auto2\"">auto2<\/option></option>
看到所有那些转义字符了吗?好吧,我尝试在 PHP 端回显结果,而不是echo
使用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;
}