多个嵌套的jQuery Ajax调用可能的Bug?

时间:2013-05-23 18:59:26

标签: jquery ajax json post

在我目前的项目中,我使用Google Feed API来获取Feed的JSON / XML数据。由于我想在向用户显示之前在我的服务器上解析这些数据,因此我提出了以下概念。

客户端通过AJAX从Google API请求JSON / XML数据 - >数据通过AJAX Post Request发送到我的服务器(xml_receiver.php写入缓存文件) - >服务器发送回解析的JSON响应(json_sender.php加载缓存文件) - > cliendside上的jQuery将所有数据放在HTML Context中。

我的代码就像魅力一样,但是当我想用FireBug进行调试时,它一直告诉我对xml_receiver.php的POST请求以及对json_sender.php的GET请求失败。

由于xml_receiver绝对接收数据并且json_sender.php正在发送正确的输出,这真的很奇怪。 (检查100%!)

PS:我使用“trs_id”缓存数据而不让xml_receiver.php打印JSON数据的原因是,当POST完成时,jQuery似乎没有从xml_receiver.php加载响应。

这是我的jquery代码:

// JSON Loader Client-Side

$.ajax({

    url: 'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&output=json_xml&q=%Here goes my RSS URL%',

    success: function (data) {

            console.log("JSON Data received, starting Transmission");

            var xml = data.responseData.xmlString; // Get XMLString from JSON Data
            var trs_id = makeid(); // Create a random ID that will be used for transmission

            // Transmit received JSON to Server with data and ID

            $.ajax({
                type: 'POST',
                async: false,
                url: 'http://myserver.com:3333/feed_loader/xml_receiver.php',
                data: {
                    trs_id: trs_id,
                    xml_data: xml
                },
                success: function () {
                    console.log("Transmission to server OK!");
                },
                error: function (error) {
                    console.log("Transmission to server Failed!");
                    console.log(error);
                }
            }); 

            // Get cached and prepared Data back from Server

            $.ajax({
                dataType: 'jsonp',
                url: 'http://myserver.com:3333/feed_loader/json_sender.php?trs_id='+trs_id,
                success: function (data) {
                    console.log("Parsed JSON Data received!");
                    $(data).prependTo('#xml_content'); 
                },
                error: function (error) {
                    console.log("Receiving parsed Data Failed!");
                    console.log(error);
                }
            });

    },

    error: function (data) {

            console.log("Error while loading JSON Data from Google Feed API");

            data = JSON.stringify(data);            
            // Transmit received Error to server    

            $.ajax({
                type: 'POST',
                url: 'http://myserver.com:3333/feed_loader/error_receiver.php',
                data: {
                    json_stream: data,
                },
                success: function (data) {
                    console.log("Error Data was transmitted to Server!");
                }
            });         
    },

    dataType: 'jsonp'

});

});

这就是Firebug在控制台窗口中放置的内容

收到JSON数据,启动Transmission feed_test.html(Zeile 13) POST http://“myserver”:3333 / feed_loader / xml_receiver.php 200 OK 49ms jquery .... min.js(Zeile 5)

传输到服务器失败! feed_test.html(Zeile 32) 对象{readyState = 0,status = 0,statusText =“[例外...”失败“...... d ::第5行”数据:否]“} feed_test.html(Zeile 33)

接收已解析的数据失败! feed_test.html(Zeile 47) 对象{readyState = 4,status = 200,statusText =“success”}

0 个答案:

没有答案