Post用ajax jquery发送空格时句子有+

Post with ajax-jquery send blank space when the sentence have +

本文关键字:句子 空格 ajax jquery Post      更新时间:2023-09-26

我使用jquery ajax通过邮件发送了一个请求,但我发送的一些单词有+来连接单词,如:HTA+HIPERAQUITISM+DBLR,php接收HTA HIPERAQUITSM DBLR用空格更改+,我发布了下面的代码。帮助

          function getItemInfo(itemName, itemField, itemComparative, itemTable){
                       var result = "";
                       var nombreItem = itemName;
                       var campoItem = itemField;
                       var comparativeItem = itemComparative;
                       var tableItem = itemTable;

                        $.ajax({
                            type: 'POST',
                            async: false,
                            url: 'modules/medicos/controller.php?fun=consul_item&nombre_item=consul_item'+
                                  '&nombre_item='+nombreItem+
                                 '&campo='+campoItem+
                                 '&comparador='+comparativeItem+
                                 '&tabla='+tableItem,
                            success: function(data) {
                                result = data.toString();
                            },
                            failure: function() {
                                result = "";
                            }
                        });
                       return result;
                   }//end function

这是因为在URL+中意味着空间。

在将数据添加到查询字符串之前,您需要先对数据进行URL编码。

在将值添加到查询字符串之前,可以使用encodeURIComponent((函数对其进行编码。

一旦你的PHP代码接收到它,你就可以用urldecode函数解码这个值

所以你的代码应该更新成这样:

url: 'modules/medicos/controller.php?fun=consul_item&nombre_item=consul_item'+
                                  '&nombre_item='+encodeURIComponent(nombreItem)+
                                 '&campo='+encodeURIComponent(campoItem)+
                                 '&comparador='+encodeURIComponent(comparativeItem)+
                                 '&tabla='+encodeURIComponent(tableItem),

您的代码似乎是正确的。您正在逐个传递这些变量(nombreItem、campoItem、comparativeItem和tableItem(。所以我真的不明白你说的不起作用。

简化数据传递的建议:

$.ajax({
      type: 'POST',
      async: false,
      url: 'modules/medicos/controller.php',
      data : ({ fun : consul_item,
                  nombre_item : nombreItem,
                  campo : campoItem,
                  comparador : comparativeItem,
                  tabla : tableItem }), 
      success: function(data) {
            result = data;
      },
      failure: function() {
            result = "";
      }
});

如果你想将所有信息作为一个文本字符串传递,你应该这样做:

...
data: ({ test : consul_item + '+' + nombreItem + '+' + campoItem + '+' + comparativeItem + '+' + tableItem }), 
...