目的: V60202 – [儲存位置]- 依[庫房]欄位值,過濾[儲存位置] - url 特殊字元(#,?,&)處理 -
處理說明: 1>url 若含有 # 送至後端會錯誤, 瀏覽器會把#當成url分隔符號,不會傳給伺服器-->所以 '../get_SPPick?WH=17# , 送至後端,17# 變成 17 , #不會傳給後端
-->url(含中文字,Ex:庫房),瀏覽器會自動將中文字編成%xx,送至後端
2>*.js 參數編碼: encodeURIComponent()
--> 所有特殊字元(#,?,&,庫房),均會編碼(%xx)
var Tmp_url = "../api/V60202API/get_SPPick?WH="
+ encodeURIComponent(Tmp_WH);
3>*.cs 後端[HttpPost]
--> *.cs 參數會自動將 %xx 還原成原始字元(#,?,&,庫房)
[HttpPost]
//前端 WH: 17%23 --> 後端 WH: 17#
//前端 WH: 17%2523 --> 後端 WH: 17%23
--> Uri.UnescapeDataString(17%23) -- 17#
public dynamic get_SPPick(string SP = "", string WH="" ,int isComplete = 0)
Ext.getCmp('btn_SP').on("click", function () {
var Tmp_WH = Ext.getCmp("WH").getValue(); //庫房可能含 17#
//1>url='../get_SPPick?WH= 17#', 傳至後端,會 錯誤 , --> url 需改成 17%23 傳至後端
//17# , encodeURIComponent(Tmp_WH) --> 17%23
var Tmp_url = "../api/V60202API/get_SPPick?WH=" + encodeURIComponent(Tmp_WH);
var win = EditPickx('儲存位置', Tmp_url, ['SP',], ['SP'], J_pickstore_SP, J_pickcolumns_SP);
win.show();
});
2>*.cs
[HttpPost]
//前端 WH: 17%23 --> 後端 WH: 17#
//前端 WH: 17%2523 --> 後端 WH: 17%23 ,前端以 %23編碼 --> 後端還原成 %23
public dynamic get_SPPick(string SP = "", string WH="" ,int isComplete = 0)
{
string Tmp_Sql = " SELECT DISTINCT SP , WH "
+ " FROM AMM_COMP "
+ " WHERE 1=1 "
+ " AND SP IS NOT NULL "
+ " AND STAT='A' ";
if (!myfunc.checkisnull(WH))
{
Tmp_Sql = Tmp_Sql + " AND WH=" + myfunc.AA(WH);
}
Tmp_Sql = Tmp_Sql + " ORDER BY SP ";
string n = funId + "s_SP";
DataSet ds = setupPickDs(n, Tmp_Sql, new string[] { "AMM_COMP" });
if (SP != null && !SP.Equals(""))
{
if (isComplete == 1)
{
ds = getPickDsbyCondi(n, "SP='" + SP + "'");
}
else
{
ds = getPickDsbyCondi(n, "SP LIKE '%" + SP + "%'");
}
}
return ds;
} // end of get_SPPick
沒有留言:
張貼留言