当有人点击按钮时,从ajax调用触发successhandler

时间:2014-06-04 23:59:54

标签: javascript jquery ajax

我有一个ajax调用,它从连接到api的php文件中获取数据。我有一个成功处理程序,它接收来自ajax调用的数据,然后从API库加载一个函数。问题是,我希望用户单击一个按钮,然后在成功调用中运行该函数(使用之前ajax调用中的相同数据)。

我相信我的ajax调用需要保留在window.onload = function()中,如果我在用户点击按钮时尝试运行ajax调用,它就不起作用。

<html>
<head>
    <title>hi</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript" src="http://api.screenleap.com/js/screenleap.js"></script>
    <script>
            function hello(){
                alert("hi");
            }
            function successHandler(data){
                screenleap.startSharing('DEFAULT', data, {
                    nativeDownloadStarting: hello
                    });
            }

            window.onload = function() {
                $.ajax({
                    type: "POST",
                    url: "key.php",
                    data: '',
                    success: successHandler,
                    dataType: "json"
                }); 
            };


    </script>
</head>
<body>
    <input type="submit" value="submit" id="submit">
</body>
</html>

请让我知道如何做到这一点,我们将非常感谢任何帮助。

更新 所以我尝试调整我的代码,但由于某种原因,当我点击按钮时,没有任何事情发生。它甚至没有射出我的console.log确认我甚至点击了按钮。

<html>
<head>
    <title>hi</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript" src="http://api.screenleap.com/js/screenleap.js"></script>
    <script>
            var dataFromServer;

            function hello(){
                alert("hi");
            }
            function successHandler(data){
                dataFromServer = data;
                console.log("data from server: ")
                console.log(dataFromServer);
            }

            window.onload = function() {
                $.ajax({
                    type: "POST",
                    url: "key.php",
                    data: '',
                    success: successHandler,
                    dataType: "json"
                }); 
            };

            $("#submit").click(function(){
                console.log('clicked submit');
                if(dataFromServer)
                {   
                    console.log(datafromserver);
                    screenleap.startSharing('DEFAULT', dataFromServer, {
                        nativeDownloadStarting: hello
                    });
                }
            });
    </script>
</head>
<body>
    <input type="submit" value="submit" id="submit">
</body>
</html>

一切顺利,

- 24x7

1 个答案:

答案 0 :(得分:-1)

您可以将数据存储到某个全局变量,并在按钮单击时使用相同的变量。

var dataFromServer;

function successHandler(data){
    dataFromServer = data;
}

jQuery("#submit").click(function(){
    if(dataFromServer)
    {   
        screenleap.startSharing('DEFAULT', dataFromServer, {
        nativeDownloadStarting: hello
        });
    }
});

更新

而不是window.onload使用jquery onload函数来填充数据。

http://jsfiddle.net/ZGggK/

 $(function() {
            $.ajax({
                type: "GET",
                url: "https://api.github.com/users/mralexgray",
                data: '',
                success: successHandler,
                dataType: "json"
            }); 
        });