Javascript 为什么我没有声明变量
我的部分观点如下Javascript 为什么我没有声明变量,javascript,Javascript,我的部分观点如下 @Model.ServerDetails <div> ..... various markup </div> <script type="text/javascript"> var bs = '@Model.BackupServer'; if (bs == null) { bs = ""; } var bssn = bs + '|' + '@Model.ServerName'; $(d
@Model.ServerDetails
<div>
..... various markup
</div>
<script type="text/javascript">
var bs = '@Model.BackupServer';
if (bs == null) {
bs = "";
}
var bssn = bs + '|' + '@Model.ServerName';
$(document).ready( function() {
if (bs != "") {
$getJSON('@UrlContent("~/Details/OtherBackedUpServers?bsn=" + bssn)', function(returnedServers) {
..... removed for brevity...
}
}
});
@Model.ServerDetails
..... 各种标记
var bs='@Model.BackupServer';
如果(bs==null){
bs=“”;
}
var bssn=bs+'|'+'@Model.ServerName';
$(文档).ready(函数(){
如果(bs!=“”){
$getJSON('@UrlContent(“~/Details/otherbackedupserver?bsn=“+bssn)”,函数(returnedServers){
…为了简洁起见删除了。。。
}
}
});
不幸的是,$getJSON()参数中的bssn显示错误:“bssn”未声明。由于其保护级别,它可能无法访问
有人能解释一下为什么我能纠正它吗
谢谢您无法将JavaScript(客户端)变量传递到Url.Action
,因为它是在服务器端处理的
作为一种解决方法,您可以使用占位符生成url。然后使用.replace()
方法生成实际的url
var url = '@Url.Action("OtherBackedUpServers", "Details", new { bsn= -1})';
url = url .replace('-1', bssn);
$.getJSON(url );
或者,最好将变量作为有效负载传递
$.getJSON('@Url.Action("OtherBackedUpServers", "Details")', { bsn : -1});
或者写:
$getJSON('@UrlContent("OtherBackedUpServers", "Details")?bsn=' + bssn, function(returnedServers) {
..... removed for brevity...
}
校正
$getJSON('@Url.Action("OtherBackedUpServers", "Details")?bsn=' + bssn, function(returnedServers) {
..... removed for brevity...
}
看起来你把服务器端代码和客户端代码弄混了。你不能将客户端变量传递给服务器端函数。服务器代码在页面发送到客户端之前得到评估。在给出正确答案的客户端之间使用了这个,但使用了Url.Action而不是Url.Content,这可能是一个疏忽。我的坏-只是使用了Copy&Paste;)非常感谢