我正在使用JQuery来获取标记data-code
及其id
的值,并将它们添加到javascript对象中,以通过ajax将它们传递给PHP脚本。 PHP脚本从其他服务器获取一些数据,处理数据并将结果返回给ajax调用。
代码工作正常,但我注意到有时结果根本没有返回,也没有返回任何错误。这似乎发生在互联网连接不是我公司的高速连接时,但我不确定我的'诊断'。
以下是工作代码:
var codeArray = [];
var obj = {};
// select all .rating[data-code] class tags and get the 'data' value.
// add the values to a javascript object the pair key:value i.e. {"16": "74875932", "17": "98548957"}
$('.rating[data-code]').each(function() {
var code = $(this).data('code');
var id = $(this).attr('id');
obj[id] = code
});
codeArray.push(obj);
// If codeArray is not empty send IDs and CODEs to PHP and get results back
if(codeArray.length > 0) {
$.ajax ({
type: "post",
url: "ajax.curl.php",
data: {codeArray},
dataType: 'json',
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("some error");
},
success: function(data) {
$.each(data, function(key, value){
$('#' + key).children().html(value);
});
}
});
}
这是PHP代码。我正在使用CURL来获取HTML内容
$codeArray = $_REQUEST["codeArray"];
foreach($codeArray as $number => $number_array) {
foreach($number_array as $key => $value) {
// process the data
}
}
// output in json format
echo json_encode($output);
function get_url_contents($url) {
$crl = curl_init();
curl_setopt($crl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)');
curl_setopt($crl, CURLOPT_URL, $url);
curl_setopt($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($crl, CURLOPT_CONNECTTIMEOUT, 5);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}
有什么建议吗?服务器是从哪里获取数据阻止了什么?请考虑javascript传递给PHP脚本的“代码”数量不超过5或6.我没有使用数百或数千个调用。
我尝试在每个PHP循环中添加sleep(1)
来减慢请求速度,但它没有改变任何内容。