Javascript-将变量传递到url

问题描述 投票:-1回答:3

我正在尝试传递一些表单变量来填充网址。只要我只有一个变量,脚本就可以工作。一旦我开始添加多个变量,它就会中断,并且按钮不会对onClick起作用。我的脚本出了什么问题?

function ShowOnBaseInvoiceDocument()
{
var onBaseServer = "tudwv-emc01.dong.com";
var appName = "LawsonDev";
var screenID = "AP90";
    var accField = "InvoiceNum";
    var accField1 = "VendorID";
    var company = lawForm.getDataValue("API-COMPANY");
    var ProcLvl = lawForm.getDataValue("API-PROC-LEVEL");
    var sINVNumber = lawForm.getDataValue("API-INVOICE");
    var sVenNumber = lawForm.getDataValue("API-VENDOR");

if (sINVNumber == "")
{
    portalWnd.cmnDlg.messageBox("Please inquire on a valid invoice 
    first.","ok","info",window,false)
    return true;
}
    var encINVNumber = encodeURIComponent(portalWnd.strTrim(sINVNumber));

var s = "http://"
    + onBaseServer
    + "/OnBaseLinkWebPOC/AccLogin.aspx?DBID="
    + appName
    + "&ScreenID="
    + screenID
    + "&Company="
    + company
    + "&ProcLvl="
    + ProcLvl
    + &
    + accField1
    + "="
    + sVenNumber
    + &
    + accField
    + "="
    + sINVNumber;

 //portalWnd.cmnDlg.messageBox(s,"ok","info",window,false)

 window.open(s);
 return true;

 }
javascript
3个回答
1
投票

您有很多语法错误。否则,你很好。

请确保更频繁地将encodeURIComponent()用于URL参数。

P.S:如果您启用或安装了任何广告拦截器,则window.open()不起作用。暂时禁用,它应该可以工作。

function ShowOnBaseInvoiceDocument() {
  var onBaseServer = "tudwv-emc01.dong.com";
  var appName = "LawsonDev";
  var screenID = "AP90";
  var accField = "InvoiceNum";
  var accField1 = "VendorID";
  var company = "MyCompany";
  var ProcLvl = "5";
  var sINVNumber = "7567567567";
  var sVenNumber = "36456346436";

  if (sINVNumber == "") {
    portalWnd.cmnDlg.messageBox("Please inquire on a valid invoice first. ", "ok", "info", window, false);
    return true;
  }
  //var encINVNumber = encodeURIComponent(portalWnd.strTrim(sINVNumber));

  var s = "http://" +
    encodeURIComponent(onBaseServer) +
    "/OnBaseLinkWebPOC/AccLogin.aspx?DBID=" +
    encodeURIComponent(appName) +
    "&ScreenID=" +
    encodeURIComponent(screenID) +
    "&Company=" +
    encodeURIComponent(company) +
    "&ProcLvl=" +
    encodeURIComponent(ProcLvl) +
    "&" +
    encodeURIComponent(accField1) +
    "=" +
    encodeURIComponent(sVenNumber) +
    "&" +
    encodeURIComponent(accField) +
    "=" +
    encodeURIComponent(sINVNumber);

  //portalWnd.cmnDlg.messageBox(s,"ok","info",window,false)

  window.open(s, "My Invoice");
  console.log(s);
  return true;
}

ShowOnBaseInvoiceDocument();

1
投票

我认为在那里使用Template Literals / Template Strings会更好,让您的生活更轻松。

var s = encodeURIComponent(`http://${onBaseServer}/OnBaseLinkWebPOC/AccLogin.aspx?DBID=${appName}&ScreenID=${screenID}&Company=${company}&ProcLvl=${ProcLvl}&${accField1}=${sVenNumber}&${accField}=${sINVNumber}`);

0
投票
    function ShowOnBaseInvoiceDocument() {
      var onBaseServer = "tudwv-emc01.dong.com";
      var appName = "LawsonDev";
      var screenID = "AP90";
      var accField = "InvoiceNum";
      var accField1 = "VendorID";
      var company = "MyCompany";
      var ProcLvl = "5";
      var sINVNumber = "7567567567";
      var sVenNumber = "36456346436";

      if (sINVNumber == "") {
        portalWnd.cmnDlg.messageBox("Please inquire on a valid invoice first. ", "ok", "info", window, false);
        return true;
      }
      //var encINVNumber = 

encodeURIComponent(portalWnd.strTrim(sINVNumber));

            var s =` http://${onBaseServer}/OnBaseLinkWebPOC/AccLogin.aspx?DBID=${appName}&ScreenID${screenID}&Company=${company}&ProcLvl=${ProcLvl}&${accField1}=${sVenNumber}&${accField}=${sINVNumber};`

          //portalWnd.cmnDlg.messageBox(s,"ok","info",window,false)

          window.open(s, "My Invoice");
          console.log(s);
          return true;
        }

        ShowOnBaseInvoiceDocument();



try using the latest es6 template literals
© www.soinside.com 2019 - 2024. All rights reserved.