我遇到了一些用户输入的问题,我想通过包含特殊字符的AJAX将这些输入作为JSON发送到PHP,比如",'等。我正在发送一个数组(用于slickgrid)的内容,除非包含这些字符,否则一切都很好。我知道PHP有方便的函数mysql_real_eescape_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);
?>
更清楚地说,当包含特殊字符时,既不会触发成功事件,也不会触发错误事件。
我看了看firebug,当特殊字符包括在内时,它似乎根本没有发送任何东西。。。当然,当它只是信件或其他什么的时候,它会这样做。
这是由于这里的脚本在某些类型的输入上明显失败。切换到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中获得的名称-值对。
escape()
函数。你可以$.JSON.encode(escape(data))
可能工作