在我目前的项目中,我使用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”}