[英]Javascript: Access public variable from private function
我正在學習javascript,並在下面嘗試了一些代碼。 我將以下javascript對象稱為
var client=new atrmsClient('6247543');
var val=client.getRosterData();
我在這條線上出現錯誤:
var postData= {"cmdShow": "Show", "txtEmpId" : EmpId, "txtPeopleSoft_Id": EmpId, "__VIEWSTATE": viewState }
EmpId未定義。 誰能告訴我我做錯了什么?
"use strict";
function atrmsClient(EmployeeId)
{
this.EmpId=EmployeeId;
var siteUrl="http://wncrpma011.japa.ad.aexp.com/TransportRoster/EmployeeReport.aspx";
var getViewState=function()
{
$.ajax
({
type: "GET",
url: siteUrl,
dataType: 'html',
processData: false,
xhrFields:
{
withCredentials: true
}
})
.done(ExtractViewState).fail(errorFunc).always(alwaysFunc);
return "";
};
var SendPostRequest=function(viewState)
{
var postData= {"cmdShow": "Show", "txtEmpId" : EmpId, "txtPeopleSoft_Id": EmpId, "__VIEWSTATE": viewState }
$.ajax
({
type: "POST",
url: siteUrl,
data: postData,
dataType: 'html',
processData: false,
xhrFields:
{
withCredentials: true
}
})
.done(parseRosterData).fail(errorFunc).always(alwaysFunc);
};
var parseRosterData=function(data)
{
console.log(data);
};
var ExtractViewState=function(data)
{
var rawResponse=data;
var viewState=$(rawResponse).find('input[name=__VIEWSTATE]')[0].value;
console.log(viewState);
SendPostRequest(viewState);
};
var errorFunc=function()
{
};
var alwaysFunc=function()
{
};
this.getRosterData=function()
{
var viewStateVal=getViewState();
console.log("calling");
return "";
};
}
您永遠不會聲明一個名為EmpId
的變量。
您擁有的唯一EmpId
是atrmsClient
實例的屬性 。
加
var EmpId = EmployeeId;
…或僅使用EmployeeId
,因為它仍在范圍內。
另一個解決方案可能是:
function atrmsClient(EmployeeId) {
var that = this;
this.EmpId=EmployeeId;
var SendPostRequest=function(viewState) {
var postData= {"cmdShow": "Show", "txtEmpId" : that.EmpId, "txtPeopleSoft_Id": that.EmpId, "__VIEWSTATE": viewState }
// ...
};
}
這取決於您是否需要從外部使用EmpId
,即使用client.EmpId
。 如果是,則此解決方案應適合您的需求。 否則,請使用@Quentin。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.