我只是想从函数外部使用一个变量,但我不确定我要为此做些什么......
var myRequest = a;
是否足以在函数中使用此变量?
因为我看到了这样一个例子:var myRequest = e.which;
我问这个是因为我的请求没有取得成功。
我认为它无法正常工作,因为ajaxFunction(3)
的工作方式不同于将send.php?goto=3
写入浏览器的地址栏。
您可以看到以下代码:
function ajaxFunction(a)
{
var ajaxRequest;
try {
ajaxRequest = new XMLHttpRequest();
} catch (e) {
try {
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("Your browser broke!");
return false;
}
}
}
ajaxRequest.open("GET", "send.php?goto=" + a, true);
ajaxRequest.send();
}
答案 0 :(得分:1)
如果要在函数外部使用变量,则必须使用全局范围变量,例如(使用jQuery ajax)
var globalA = null;
$(document).ready(function(){
var localA1 = null;
$.ajax({
"url":"http://someurl.com/",
"type":"POST",
"dataType":"json",
"success":function(incomingData){
var localA2 = incomingData //localA2 only useable inside this function
localA1 = incomingData; //localA1 being set here still can only be used here as code within the "ready" function has already been executed and will see it as null
globalA = incomingData; //Now any further code should use globalA as it now contains useable data
doSomethingWithData();
},
"error":function(xhr,msg) {
alert("Ajax Error:"+msg);
}
});
alert(localA1); //Will give alertbox with null in it as localA1 has not been set.
});
function doSometingWithData() {
alert(globalA); //You can now use the data in whatever function makes reference to globalA
}
当然,在这个例子中,您可以直接将数据传递给doSomethingWithData()
并在那里进行处理。
答案 1 :(得分:0)
您可以查看jQuery $.globalEval
,以便在AJAX成功函数内全局实例化变量。
$.ajax({
url: "send.php",
success: function (data) {
$.getScript("somescript.js", function(data) {
$.globalEval("var something = new Whatever;");
});
});
如果您发现需要在ajax调用中加载外部JS文件并使其资产全局可用,则$ .getScript部分是一个有用的小部分。然后,您可以使用$.globalEval
来实例化AJAX函数内的变量。
答案 2 :(得分:-2)
您没有用于将值设置为变量的函数包装器。
var myRequest = a;
这已经足够了。
经过思考修改
以一种非常基本的方式,变量可以像占位符一样自行创建。
var myRequest;
当你进入这个功能时(假设你有一系列功能。
你可以这样做。
功能(myRequest =一);
如果函数有多个参数,它可能看起来像这样。
功能(myRequest = A,myConcern = b)的正如你在
中所说的那样 var arg1 = 1;
var arg2 = 2;
var arg3 = 3;
ajaxRequest.open(ARG1,ARG2,ARG3);
我希望这有用,是的,更多信息会有所帮助(如下面的海报所示)。