Javascript 如何传递多个参数,其中一些参数的运算符符号为“+”或“&”

Javascript 如何传递多个参数,其中一些参数的运算符符号为“+”或“&”,javascript,Javascript,我尝试用以下案例制作购物车: 我有按钮onclick=addItemaction,单击时cat_no将启动此功能: function addItem(action,cat_no) { switch(action) { case "adds": queryString = 'action='+action+'&cat_no='+cat_no; execute ajax adds...} break;

我尝试用以下案例制作购物车:

我有按钮onclick=addItemaction,单击时cat_no将启动此功能:

function addItem(action,cat_no) {
    switch(action) {
        case "adds":
            queryString = 'action='+action+'&cat_no='+cat_no;
             execute ajax adds...}
        break;
        case "drop":
            queryString = 'action='+action+'&cat_no='+cat_no;
             execute ajax drop...}
此函数用于将值传递给php脚本

我发现如果我有一个带有cat_的条目,没有“+”和“&”将失败

例如,假设:cat_no='SS+03L'

我认为这是因为当它将这个值放入queryString时,“+”变成了运算符而不是值:

queryString = 'action='adds'&cat_no='SS+03L; 
当我检查echo$\u GET['cat\u no']时,我只得到'SS'而不是'SS+03L'

在这种情况下,我可以做些什么来确保“SS+03L”可以正确地放入查询并传递给php

首先,需要在javascript中使用encodeURIComponent对该运算符字符进行编码

然后“如果您需要”在php中进行解码,您可以使用urldecode返回原始字符串


希望有帮助

可能重复的可能重复的可能重复的可能重复的我只使用:queryString='action='+action+'&cat\u no='+encodeURIComponentcat\u no;它已经起作用了,为什么?不需要在php中进行urldecode。我真的需要在php中进行urldecode吗?如果不是,那么这是为了什么呢?我的JSUTCHECK php手册上说:superglobals$\u GET和$\u REQUEST已经被解码了。在$\u GET或$\u请求中的元素上使用urldecode可能会产生意外和危险的结果。well@P.Lau感谢您阅读文档。事实上,我现在是python的正式成员,我只是忘记了那一部分:P
encodeURIComponent( 'SS+03L') // will be "SS%2B03L" then pass to php

//in your case> queryString = 'action='+action+'&cat_no='+encodeURIComponent(cat_no);
urldecode("SS%2B03L") /*you will get 'SS+03L' back and construct your query then*/