使用Jquery进行带有“+”符号的ajax调用

12
$.ajax({  
        type: "POST", url: baseURL+"sys/formTipi_azioni",data:"az_tipo="+azione,
        beforeSend: function(){$("#form").html('<p><img src="'+baseURL+'lib/img/ajax-loader.gif" width="16" height="16" alt="loading" /><p>');},
        success: function(html){$("#form").html(html);}  
     });

有一种情况是azione为

TB+ 

加号根本没有被POST,只有一个空格被发送。我已经尝试过以下方法:

azione = escape(String(azione));

没有成功。有人知道如何修复这个问题吗?

6个回答

16
azione = escape(String(azione));

应该是这样的

azione = encodeURIComponent(String(azione));

或者简单地说

azione = encodeURIComponent(azione);

3
在JavaScript中,类型转换不是这样的...((String)azione) - James

14

试试这个:

$.ajax({  
    type: "POST", 
    url: baseURL + "sys/formTipi_azioni",
    data: { az_tipo: azione },
    beforeSend: function(){
        $("#form").html('<p><img src="'+baseURL+'lib/img/ajax-loader.gif" width="16" height="16" alt="loading" /><p>');
    },
    success: function(html){
        $("#form").html(html);
    }  
});

并让jQuery为您执行URL编码。


很好,我从未知道这是可能的。谢谢。 - 0plus1
可以实现,好处是您不必担心URL编码。 - Darin Dimitrov
+1,在这种情况下最好的解决方案。"永远不要使用escape()"仍然是需要记住的一点。 - Tomalak

9

永远不要使用escape(),而要使用encodeURIComponent()


6

不需要自己尝试组合帖子数据,您也可以通过将对象传递给jQuery来让它完成工作:

$.ajax({  
    type: "POST", url: baseURL+"sys/formTipi_azioni",
    data: {az_tipo: azione},
    beforeSend: function(){$("#form").html('<p><img src="'+baseURL+'lib/img/ajax-loader.gif" width="16" height="16" alt="loading" /><p>');},
    success: function(html){$("#form").html(html);}  
 });

3

2
escape(String(azione)).replace(new RegExp( "\\+", "g" ),"%2B");

这个使用正则表达式发送加号符号


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接