我有一个带有缓存清单的

HTML5测试网页test.html.该网页向同一服务器发送Ajax请求,并向缓存清单中的NETWORK:部分下列出的网页do_get_data.PHP发出请求.

该请求由Firefox 10和iPhone iOS 5 Safari执行(这在服务PHP脚本do_get_data.PHP中记录). Firefox 10在10秒后调用成功回调函数,即返回来自服务器的数据.但是,我的iPhone iOS 5 Safari在启动请求后立即调用失败回调函数,并且不调用成功回调函数.

对于iPhone iOS 5 Safari,textStatus是错误的,JSON.stringify(jqXHR)是{“readyState”:0,“responseText”:“”,“status”:0,“statusText”:“error”}.

使用test.html中的以下代码执行请求:

function test_ok(data) {

alert('Test OK,data: ' + JSON.stringify(data));

}

function testFail(jqXHR,textStatus) {

alert(textStatus + ' | ' + JSON.stringify(jqXHR));

}

function get_data(testurl) {

var senddata,request;

alert('Request for ' + testurl + ' started.');

window.testid = new Date().getTime();

senddata = {

background: true,requestId: window.testid

};

request = $.ajax({

url: testurl,cache: false,type: "GET",data: senddata,success: test_ok

});

request.fail(testFail);

}

作为参考,do_get_data.PHP如下所示:

$id = md5(rand() . rand());

trigger_error(implode("\t",array('start',$id,$_SERVER['REQUEST_URI'],$_SERVER['REMOTE_ADDR'],$_SERVER['USER_AGENT']));

sleep(10);

header('Content-Type: application/json');

$json = json_encode(array('msg'=>'Test was OK'));

trigger_error(implode("\t",array('echo',$json));

echo $json;

?>

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐