如何将全局变量值获取到 ajax

How to get global variable value to ajax

本文关键字:获取 ajax 变量值 全局      更新时间:2023-09-26

我正在尝试获取ajax,jquery函数中的全局变量值。

在这里我正在使用这段代码。

法典:

 <script type="text/javascript">
        var id;      
        function refreshRecord(id)
        {
           alert(id);
        }
     $(document).ready(function(){
     $("#refresh").click(function(){
         var fileId=id;
         alert("id is"+fileId);
         $.ajax({
            type:"post",
            url:"checkStatusAndNumRecs",
            data: {fileId:fileId},
            success:function(data){$("#div1").html(data);},
            error:function(data){$("#div1").html("It was a failure !!!");}
            });
            });
            }); 
</script>   

点击一个提交按钮,我正在调用javascript函数

<input type="radio" name="submit" value="submit" onclick="refreshRecord(this.value)">

这里我想得到的是,我已经在脚本标签中声明了全局变量 id,当我单击单选按钮时,onClick 事件使用一个参数"id"调用 JavaScript 函数 refreshRecord(id)

现在,该 ID 值将设置为某个值。 现在我想在 jquery 函数中获取该变量值,我想将其分配给

var fileId = id;

但是当我执行上述代码并单击按钮时。

在警报中,它正确显示第一个值(即来自JavaScript的警报正确到达),但来自ajax,jquery的警报即将到来是未定义的或[对象对象]

我该如何解决这个问题??

您需要将

传递给函数的值分配给全局变量 id 。当前您未分配它。函数的参数id只是函数的局部,不是同一个全局变量,全局变量id还是undefined

只需修改如下,

    var id;      
    function refreshRecord(value)
    {
       id = value;
       alert(id);
    }

您应该将字段中的值放在全局变量中:

var id;      
function refreshRecord(inputValue)
{
    id = inputValue;
    alert(id);
}

因为如果你这样做:

function refreshRecord(id)
{
    alert(id);
}

由于函数作用域内的名称冲突,在 RefreshRecord 函数中无法访问 id 全局变量。请阅读范围以了解:

http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/

我们在函数内部传递的参数充当该函数的局部变量。因此,在您的函数中,您实际上是在创建一个局部变量并设置值。

试试这个——

var id;
function refreshRecord() {
    id = $("input:radio").val();
}

给出一个id,以便为单选按钮提供更好的选择器。