【问题标题】:Polling AJAX request and sending data between javascript and server轮询 AJAX 请求并在 javascript 和服务器之间发送数据
【发布时间】:2011-07-08 04:36:06
【问题描述】:

我需要向服务器发送一个轮询 AJAX 请求,并向服务器发送一些数据(我想我会在 url 中传递这些数据)。我将运行许多不同的 resque 后台作业,并且我想检查每个作业是否已完成。我找到了一个 gem (resque-status),但我不确定如何在 javascript 和控制器之间来回发送数据。

第一件事是如何构造这个对服务器的轮询 AJAX 请求?语法是什么?我不确定的下一件事是如何将作业状态发送回 ajax 请求,然后如果不是所有作业都完成,然后再次发送 AJAX 请求?我假设 JSON 在这里可能会有所帮助。

我非常感谢代码示例(最好使用 Ruby on Rails 和 JQuery。

【问题讨论】:

    标签: jquery ruby-on-rails ajax backgroundworker polling


    【解决方案1】:

    使用像 jquery 这样的库

    js:

    $(document).ready(function(){
        $.ajax({
            method: "POST",
            url: "ajax.php",
            dataType: "json", //jquery will convert the json into an object
            data: { //data sent to server
                foo: "foo",
                bar: "bar"
            },
            success: function(data){ //callback function
                if(data["type"] == "success"){
                    alert(data["msg"]);
                }else{
                    alert("malformed response");
                }
            }
        });
    });
    

    php:

    <?php
    $obj = new stdClass();
    $obj->type = "success";
    $obj->msg = "foo: " . $_POST["foo"] . ", bar: " . $_POST["bar"];
    echo json_encode($obj); //echo the object as json
    ?>
    

    【讨论】:

    • PHP 中的 json 数据在哪里被发送回 ajax 函数?它如何知道将 json 数据发送到哪个 AJAX 函数?顺便说一句,我正在使用 RoR。如果您知道的话,我更喜欢该语言框架中的示例。
    • 回显 json_encode($obj);正在寄回。它根据在请求中得到的参数知道要发回什么。
    • 但它如何知道将其发送回同一个 AJAX 函数?您知道如何从 RoR 控制器内部将其发回吗?
    • ajax 只是来自 javascript 的 http 请求。 php 对客户端脚本一无所知。 webdesignerdepot.com/2008/11/how-ajax-works
    • 对对对。那么既然都是一个请求,那么ajax请求会在成功回调中自动接收data变量中的JSON数据吗?我根本不需要解析 JSON?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2015-08-31
    相关资源
    最近更新 更多