目标和背景
比较两个文本示例。这些文本样本是产品的描述。从文本区域以某种形式获取样本1。样本1通过AJAX发送到另一个文件,以便与样本2进行比较,该样本2是从数据库中获取的。
我尝试作为JSON对象发送,因为我认为这将使我能够在普通的POST / GET请求中发送URL编码的数据。
问题
当我通过AJAX在JSON对象中发送示例1时,正在使用+
进行URL编码,以获取空格等信息……我需要按原样发送文本,以便可以对其进行比较。 URL解码将不起作用,因为真正的示例1中可能确实包含+
和其他字符。
问题
如何在不进行URL编码的情况下发送示例1?
代码
// we need the product id and description
var pid = $("input[name='pid']").val();
var descr = $("textarea[name='descr']").val();
// put in a json object so we can see the real data
var $obj = {
"pid": pid,
"descr": descr // Sample 1
}
// make the call and return the promise
return $.ajax({
type: 'POST',
url: 'request_file.php',
dataType: "json",
data: $obj
});
答案 0 :(得分:1)
从$.ajax
API的jquery docs中
contentType (default: 'application/x-www-form-urlencoded; charset=UTF-8')
因此,默认情况下,它将仅以url编码形式发送。通过设置正确的参数,按如下所示更新AJAX调用。
return $.ajax({
type: 'POST',
contentType :'application/json',
url: 'request_file.php',
dataType: "json",
data: $obj
});
contentType
参数通常采用MIME类型作为值。通常在发送请求时为用例设置正确的MIME类型,并使用相同 MIME类型从后端的请求中读取数据。