AJAX —发送不带URLencoding的JSON

时间:2019-06-12 13:21:35

标签: json ajax post serialization urlencode

目标和背景

比较两个文本示例。这些文本样本是产品的描述。从文本区域以某种形式获取样本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
        });

1 个答案:

答案 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类型从后端的请求中读取数据。

您可以参考here for various MIME types

相关问题