现在无需阅读无聊的代码,让我简单总结一下发生了什么。 当文档加载时,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;
}
答案 0 :(得分:0)
没有看到一些代码,很难知道发生了什么,也许我不明白你的问题。根据我的经验,最好把所有东西都放在UTF-8中。我记不起来了,但在某些情况下,UTF-8是AJAX的默认设置。对不起我的含糊不清,但如果您不使用UTF-8,似乎没有一个好的解决方法。
这意味着您应该将数据库中的所有表格更改为UTF-8,以UTF-8格式保存所有文件(我使用TextPad更改格式),并将所有HTML页面指定为UTF-8。
我不得不经历那种不愉快的经历,因为我用葡萄牙语开发了很多重音字符的网站。我曾经尝试使用ISO-8859-1,但在使用AJAX后,我发现UTF-8确实是唯一可行的选择。
答案 1 :(得分:0)
在PHP 5.3.13上:
header("Content-Type: text/plain"); // to make sure browser displays raw html
$str = '<option value="auto">auto</option>';
echo json_encode($str);
echo "\n";
echo $str;
输出
"<option value=\"auto\">auto<\/option>"
<option value="auto">auto</option>
此处没有转换的特殊字符。
$.post('test.php').done(function(text){
return console.log(text);
});
将相同的内容打印到控制台。
如果没有AJAX,json_encode($ str)会显示"
等吗?