【发布时间】:2012-02-15 18:21:35
【问题描述】:
我在用户输入的输入中遇到了一些问题,我想通过 AJAX 将其作为 JSON 发送到 PHP,其中包含特殊字符,如“、”等。我正在发送数组的内容(用于slickgrid),除非包含这些字符,否则一切正常。我知道 PHP 有方便的函数 mysql_real_escape_string,但是有任何 jquery 类似物吗?这里是相关代码:
req = $.ajax({
url: url,
dataType: "text",
data: {"data": $.JSON.encode(data)},
type: "post",
success: onSaveSuccess,
error: onSaveError
});
这是提交给的 PHP:
<?php
//$data = array();
//if (isset($_POST['data']))
//{
//$data = json_decode($_POST['data']);
//}
//header('Content-Type: text/javascript');
//echo json_encode($data);
print_r($_POST);
?>
更清楚一点,当包含特殊字符时,既不会触发成功事件,也不会触发错误事件。
我查看了萤火虫,当包含特殊字符时,它似乎根本不发送任何东西......当然,当它只是字母或其他东西时它会发送任何东西。
【问题讨论】:
-
你不能只做
mysql_real_escape_string(stripslashes($_POST['var']))吗? -
它一开始就没有进入 PHP,所以没有......
-
哦,我明白了。因为字符串中的逗号。
-
jQuery 将为您处理有效负载的正确转义。您不需要 并且 不应该在 UI 端进行任何进一步的转义。您应该在后端的反序列化 JSON 有效负载上使用 mysql_real_escape_string。也许显示你的 PHP 代码会有所帮助。
-
好的,我展示了当前的情况。我除了 print_r($_POST) 什么都不做。发送请求时,我有一个与“保存”挂钩的事件,该事件被触发……然后什么也没有。 AJAX 不会触发成功或错误事件。我发送的数据中有问题的字符串类似于:'",.
标签: php javascript jquery ajax json