URL 在 jQuery 中为 AJAX 请求编码字符串

2022-08-30 00:40:30

我正在我的应用程序中实现Google的即时搜索。我想在用户键入文本输入时触发HTTP请求。我遇到的唯一问题是,当用户到达名字和姓氏之间的空格时,空格未编码为 a ,从而中断了搜索。如何将空格替换为 ,或者只是安全地对字符串进行 URL 编码?++

$("#search").keypress(function(){       
    var query = "{% url accounts.views.instasearch  %}?q=" + $('#tags').val();
    var options = {};
    $("#results").html(ajax_load).load(query);
});

答案 1

尝试 encodeURIComponent

对统一资源标识符 (URI) 组件进行编码,方法是将某些字符的每个实例替换为一个、两个、三个或四个转义序列,这些转义序列表示该字符的 UTF-8 编码(对于由两个“代理”字符组成的字符,只有四个转义序列)。

例:

var encoded = encodeURIComponent(str);

答案 2

encodeURIComponent对我来说工作正常。我们可以在ajax调用中给出这样的url。代码如下所示:

  $.ajax({
    cache: false,
    type: "POST",
    url: "http://atandra.mivamerchantdev.com//mm5/json.mvc?Store_Code=ATA&Function=Module&Module_Code=thub_connector&Module_Function=THUB_Request",
    data: "strChannelName=" + $('#txtupdstorename').val() + "&ServiceUrl=" + encodeURIComponent($('#txtupdserviceurl').val()),
    dataType: "HTML",
    success: function (data) {
    },
    error: function (xhr, ajaxOptions, thrownError) {
    }
  });