jQuery 1.4打破了我的程序

时间:2010-01-15 01:23:06

标签: jquery ajax json

我使用jquery ajax请求从我的数据库中提取html。

但是,如果有单引号('),我会收到解析错误。

常规报价正常(“)。

例如,在我的数据库中,我有:

style=font-family:"times' new roman"

(我经常把'放在那里进行测试)。随着它的消失......

我开始请求:

$.ajax({
       url: "phps/file.php?id="+id,
       dataType: "json",
       error: function(uno,dos,tres){

我的php文件:

$code = mysql_real_escape_string($results['code']);
//return
header('Content-type: application/x-json');
echo '{';
echo '"code": "' . $code. '"';
echo '}';

jquery错误函数给了我:

[object XMLHttpRequest]
parsererror
undefined

我认为这是问题,但我不知道如何解决它:

  

我们现在严格关于传入的JSON,如果我们得到格式错误的JSON,则抛出异常。   如果您需要能够评估格式错误的JSON是有效的JavaScript,您可以发出文本请求并使用eval()来评估内容。

谢谢!

2 个答案:

答案 0 :(得分:6)

我会将您的PHP更改为:

header('Content-Type: application/json');
echo json_encode(array('code' => $code));

即,将MIME类型更改为application/json并使用PHP的本机json_encode(),而不是手动构建JSON。

答案 1 :(得分:2)

我认为最好的办法是使用json_encode

header('Content-type: application/x-json');
echo json_encode($results);`

或者您可以替换字符串中的“with \”,它应该是我能看到的有效JSON。 str_replace("\"", "\\"", $code)

或者,如果这些选项都不起作用,请使用jQuery执行文本请求。我不确定确切的语法。

此JSON验证程序可能对您有用:http://jsonformatter.curiousconcept.com/