我编写了一个php代码来查找目录中的jpg文件数 这是代码。
<?php
$directory = $_POST['address'];
$num_files = 0;
$files = glob($directory."*.jpg");
$num_files = count($files);
echo $num_files;
?>
我正在使用jquery的ajax方法发送和接收来自php文件的数据。代码如下。
$(document).ready(function(){
$('.mainnav li ul li').click(function(){
var parent_id = $(this).parent().attr('id');
var index = $(this).index();
var address = "images/"+parent_id+"/"+index+"/";
/*finding the number of files in the address directory*/
var number_of_files;
$.ajax({
type:"POST",
url: "numberoffiles.php",
data:{address:address},
success: function(data){
number_of_files = data;/*Line label:A*/
alert(number_of_files);
}
});
alert(number_of_files+2); /*this line is just for testing*/
/*end of number of files*/
for(var i=0;i<number_of_files;i++)
$('.thumbnail').append('<img src="'+address+i+'.jpg"></img>');
});
});
我得到&#34; number_of_files&#34;正确地在警报窗口中没有任何错误,但我不能将其数据类型转换为整数。
我尝试过不同的方法将从php文件中获取的数据转换为整数,但没有任何方法可以帮助我。
以下是我的尝试。
number_of_files = parseInt(data);/*Line label:A*/
使用上面的代码行,我得到&#34; number_of_files&#34;的值。在警告框中正确但任何算术操作与&#34; number_of_files&#34;结果变成了NAN。
例如,alert(number_of_files+2);
返回NAN。
我也尝试过以下方法。
number_of_files = parseInt(data.data);/*Line label:A*/
这行代码返回NAN。 我也尝试了+数据和数字(数据),但他们也没有工作。 所以请告诉我如何做到这一点。
答案 0 :(得分:4)
你的问题是$ .ajax是一个Asyncronous方法,这意味着成功函数将被执行但你不知道何时,也意味着ajax函数调用之后的代码将立即执行。
你有2个解决方案:
在Ajax选项中将“async”设置为false(不推荐)
在成功函数
作为旁注,javascript变量类型是动态的,这意味着JS引擎将根据需要转换您的变量。
编辑:第二个选项的例子:
$(document).ready(function(){
$('.mainnav li ul li').click(function(){
var parent_id = $(this).parent().attr('id');
var index = $(this).index();
var address = "images/"+parent_id+"/"+index+"/";
/*finding the number of files in the address directory*/
var number_of_files;
$.ajax({
type:"POST",
url: "numberoffiles.php",
data:{address:address},
success: function(data){
number_of_files = data;
alert(number_of_files);
for(var i=0;i<number_of_files;i++)
$('.thumbnail').append('<img src="'+address+i+'.jpg"></img>');
}
});
});
});
答案 1 :(得分:1)
success: function(data){
number_of_files = data;
alert(number_of_files);
alert(Number(number_of_files)+2); /*this line is just for testing*/
for(var i=0;i<number_of_files;i++)
$('.thumbnail').append('<img src="'+address+i+'.jpg"></img>');
}
答案 2 :(得分:0)
用户parseInt()函数将成功函数内的字符串转换为整数,只调用成功函数中的number_of_files
。
success: function(data){
number_of_files = parseInt(data);
alert(number_of_files);
}
答案 3 :(得分:0)
$(document).ready(function(){
$('.mainnav li ul li').click(function(){
var parent_id = $(this).parent().attr('id');
var index = $(this).index();
var address = "images/"+parent_id+"/"+index+"/";
/*finding the number of files in the address directory*/
$.ajax({
type:"POST",
url: "numberoffiles.php",
data:{address:address},
success: function(data){
number_of_files = data;
alert(number_of_files);
}
}).done(function(){ /*this line is just for testing*/
/*end of number of files*/
for(var i=0;i<number_of_files;i++)
$('.thumbnail').append('<img src="'+address+i+'.jpg"></img>');
});
});
});
//而不是从ajax中编写代码,你也可以使用.done方法来引用http://api.jquery.com/jquery.ajax/