【发布时间】:2016-11-09 14:39:52
【问题描述】:
我在点击事件调用的函数中有一个局部变量。变量因单击的按钮而异。
然后我试图将该变量传递给另一个包含 AJAX 的函数。
我似乎无法使用 ajax 函数中的第一个局部变量。
我尝试使用“window.myVariable”使其成为全局变量,但它不起作用。正如您在代码中看到的那样,我还添加了对下一个函数的调用,其中我的变量作为参数但没有骰子。我在控制台中遇到的错误是“未定义变量‘用户’。”
我根本无法访问原始函数之外的局部变量。谁能明白为什么它拒绝成为全局变量?
function getStateOfChat(){
if(!instanse){
instanse = true;
$.ajax({
type: "POST",
url: user + "/process.php",
data: {
'function': 'getState',
'nickname': nickname,
'file': file
},
dataType: "json",
success: function(data){
state = data.state;
instanse = false;
},
});
}
}
var user1 = "john";
var user2 = "andrew";
// ============== USER 1 ==============
<button type="button" class="btn btn-info btn-lg chatBtnMain" data-toggle="modal" data-target="#myModal2" id="chatBtn1">
Chat to
<span class='nickname'>
John
</span>
</button>
<script type="text/javascript">
document.getElementById('chatBtn1').addEventListener('click', runScript1);
function runScript1() {
var user = user1;
getStateOfChat(user);
}
</script>
// ============== USER 2 ==============
<button type="button" class="btn btn-info btn-lg chatBtnMain" data-toggle="modal" data-target="#myModal3" id="chatBtn2">
Chat to
<span class='nickname'>
Andrew
</span>
</button>
<script type="text/javascript">
document.getElementById('chatBtn2').addEventListener('click', runScript2);
function runScript2() {
var user = user2;
getStateOfChat(user);
}
</script>
【问题讨论】:
-
只需添加用户参数
function getStateOfChat(user) { ... } -
^ 如果传递参数也会导致
undefined错误,这意味着您分配给user的值即user1本身就是undefined。 -
^ 添加到这一点你已经在 html 中分配了
var user1 = "john";在 javascript 代码块之外 -
@anu 是的,这只是为了说明变量是什么。它在我页面上的脚本标签内。
-
@MohitBhardwaj 在使用警报进行测试时已定义 > alert(user1);它显示正确的值。我尝试在调用函数时将用户作为参数传递,但它仍然给我未定义的错误
标签: javascript ajax url global-variables local-variables