如何正确格式化用户输入的文本,以便通过JSON/AJAX发送到PHP?
我想通过包含特殊字符的AJAX将用户输入的输入作为JSON发送到PHP,如“,”等。我正在发送数组的内容(用于slickgrid),除非包含这些字符,否则一切正常。我知道PHP有方便的函数mysql\u real\u escape\u string,但是有类似jquery的函数吗?下面是相关代码:如何正确格式化用户输入的文本,以便通过JSON/AJAX发送到PHP?,php,javascript,jquery,ajax,json,Php,Javascript,Jquery,Ajax,Json,我想通过包含特殊字符的AJAX将用户输入的输入作为JSON发送到PHP,如“,”等。我正在发送数组的内容(用于slickgrid),除非包含这些字符,否则一切正常。我知道PHP有方便的函数mysql\u real\u escape\u string,但是有类似jquery的函数吗?下面是相关代码: req = $.ajax({ url: url, dataType: "text", data: {"data": $.JSON.encode(data)}, type: "post", s
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);
?>
更清楚地说,当包含特殊字符时,不会触发成功或错误事件
我查看了firebug,当包含特殊字符时,它似乎根本不会发送任何东西……当然,当它只是字母或其他东西时,它会发送任何东西。javascript有一个
escape()
函数。您可以$.JSON.encode(escape(data))
可能会起作用这是由于脚本在某些类型的输入上明显失败。切换到json2.js并使用JSON.stringify解决了这个问题
data: {"data": $.JSON.encode(data)},
向上传递比您需要的更复杂的JSON对象
$data = json_decode($_POST['data']);
正在寻找序列化的JSON对象,但jQuery在后台为您做了大量工作
试试这个
data: $.JSON.encode(data),
在AJAX调用中,然后在PHP中
$data['myPostValue'] = $_POST['myPostValue'];
您正在向
$.ajax
调用发送一个JSON对象,它正在将其更改为服务器通常从post获得的名称-值对。您不能只执行mysql\u real\u escape\u字符串(stripslashes($\u post['var'))
?它首先不适用于PHP,所以不……哦,我明白了。因为字符串中有逗号。jQuery将为您处理负载的正确转义。您不需要也不应该在UI端进行任何进一步的转义。您应该在后端的反序列化JSON负载上使用mysql\u real\u escape\u字符串。可能显示您的PHP代码可能会有所帮助。好的,我展示了当前的情况。我只做打印($\u POST)。当发送请求时,我有一个连接到“保存”的事件,该事件会被触发……然后什么都没有。成功或错误事件都不会从AJAX触发。我发送的数据中有问题的字符串类似于:“,。可能不会。escape()。