在jQuery中,$.get()
是一个用于发起HTTP GET请求的简化方法。当URL或参数中包含特殊字符时,需要特别注意编码处理以避免请求错误或安全问题。以下是相关要点:
&
, ?
, =
, #
, 空格
, +
, /
等)可能被误解为URL语法的一部分,导致请求路径或参数解析错误。&
会被视为新参数的分隔符,而非参数值的一部分。使用 encodeURIComponent()
对动态参数进行编码:
// 正确示例:编码参数值
var name = "John&Doe";
var encodedName = encodeURIComponent(name); // 输出 "John%26Doe"
$.get("/api?name=" + encodedName, function(data) { ... });
// 动态参数编码
var params = {
user: "Alice&Bob",
query: "code=123"
};
// 将对象转为编码后的URL参数字符串
var queryString = Object.keys(params)
.map(key => `${key}=${encodeURIComponent(params[key])}`)
.join("&");
// 发起请求
$.get(`/api?${queryString}`, function(response) {
console.log("成功:", response);
}).fail(function(err) {
console.error("失败:", err);
});
/
等字符通常无需编码(除非是动态路径参数)。$.param()
或 URLSearchParams
自动编码:$.param()
或 URLSearchParams
自动编码:%26
变成 %2526
)。&
, =
等关键字符编码。通过规范编码可避免这些问题。