在ajax函数中使用变量

时间:2012-10-31 20:20:29

标签: javascript ajax

我只是想从函数外部使用一个变量,但我不确定我要为此做些什么......

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(); 
}

3 个答案:

答案 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函数内的变量。

Documentation for $.globalEval

Documentation for jQuery 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);

我希望这有用,是的,更多信息会有所帮助(如下面的海报所示)。