素材牛VIP会员
请问这个ajax使用中,这里函数调用是什么意思?
 lo***ou  分类:Html5  人气:1207  回帖:4  发布于6年前 收藏

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="new_ajax.js"></script>
</head>
<body>
    <input id="btn" type="button" value="btn" />
    <script>
        var oBtn = document.getElementById('btn');
        oBtn.onclick=function()
        {
            ajax("a.txt",function(str){
                alert(str);
            });
        };
    </script>
</body>
</html>

new_ajax.js 文件 :

function ajax(url,Succ,Fail)
{
    if(window.XMLHttpRequest)
    {
        var oAjax = new XMLHttpRequest();
    }
    else
    {
        var oAjax = new ActiveXObject("Microsoft.XMLHTTP");
    }

    oAjax.open("GET",url,true);
    oAjax.send();

    oAjax.onreadystatechange=function()
    {
        if(oAjax.readyState == 4)
        {
            if(oAjax.status == 200)
            {
                Succ(oAjax.responseText);
            }
            else
            {
                if(Fail)
                {
                    Fail(oAjax.status);
                }
            }
        }
    }
};

第一 : 请问new_ajax.js文件最后,判断数据返回错误的情况下,succ()和Fail()是什么意思?为何不是写成 function succ()的和function Fail()的形式。

第二 : html文件中,调用ajax方法的时候

ajax("a.txt",function(str){
                alert(str);
            });  

//  这里为何要写成function(str){}的形式?  那么之前封装的ajax函数中,里面不是oAjax.responseText么?到了html里面调用的时候,为何成了str。

小白不太懂,望各位大神详细指点。
乀(ˉεˉ乀)

 标签:html5javascript

讨论这个帖子(4)垃圾回帖将一律封号处理……

Lv6 码匠
赵***2 Web前端工程师 6年前#1

new_ajax.js 文件内部的Succ() 和 Fail() 调用的是 function ajax(url,Succ,Fail) 时候传进来的参数,其中Succ 和 Fail参数需要是函数类型,在调用ajax() 函数时传进来,

在html文件中的

ajax("a.txt",function(str){
    alert(str);
});

function(str){}代表的就是Succ,其中str的值就是 new_ajax.js 文件中
Succ(oAjax.responseText);的值即oAjax.responseText,

这个ajax调用中 缺省了 Fail 参数

Lv6 码匠
飞***z 站长 6年前#2

第一:这里的Succ和Fail只是形参,并不需要你去申明,它就是你传入ajax方法的第二个参数和第三个参数,实际上在ajax函数中这两个函数分别是请求成功和失败的回调函数
第二:同样str是形参,oAjax.responseText是实参,调用时oAjax.responseText的值会赋给str变量

Lv6 码匠
阿***灯 页面重构设计 6年前#3

你首先理解闭包也是一个变量,问题就迎刃而解了。
如果像你那样只是声明一个函数,而不是调用。正确的做法如图中传一个闭包进入,然后调用。
你的两个问题都是因为你没有理解闭包。

Lv2 入门
钱***8 软件测试工程师 6年前#4

个人见解:成功的函数和错误的函数这两个函数具体要做什么需要你传进来,在ajax中succ()和Fail()就是回调函数

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取