javascript - 如何使用jquery的ajax方法从php文件返回整数值?

标签 javascript php jquery ajax

我编写了一段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>');
}); 
});

我在警报窗口中正确获取了“number_of_files”的值,没有任何错误,但我只是无法将其数据类型转换为整数。

我尝试了不同的方法将从 php 文件获取的数据转换为整数,但没有任何效果。

以下是我尝试过的。

number_of_files = parseInt(data);/*Line label:A*/

使用上面的代码行,我正确地获得了警报框中“number_of_files”的值,但与“number_of_files”的任何算术运算都会导致 NAN。 例如 alert(number_of_files+2); 返回一个 NAN。

我也尝试过以下方法。

number_of_files = parseInt(data.data);/*Line label:A*/

这行代码返回一个 NAN。 我也尝试过 +data 和 Number(data) 但它们也不起作用。 所以请告诉我该怎么做。

最佳答案

你的问题是 $.ajax 是一个异步方法,这意味着 success 函数将被执行,但你不知道何时执行,这也意味着 ajax 函数调用之后的代码将立即执行。

你有2个解决方案:

  • 在 Ajax 选项中将“async”设置为 false(不推荐)

  • 将所有“post ajax 代码”移至成功函数内

顺便说一句,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>');
        }
    });
}); 
});

关于javascript - 如何使用jquery的ajax方法从php文件返回整数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30457697/

相关文章:

javascript - 页面加载后如何在表单操作上触发 Jquery 事件

javascript - 在浏览器关闭之前卸载 - 如何查找用户是否选择了 "Stay"或 "Leave"

javascript - IE 11 是否可以显示像 chrome 这样的对象的内部?也许是一个插件?

php - 无法将日期插入列

javascript - 如何将变量从 javascript 移动到 javascript?

基于 jQuery 的 IE6 最小/最大宽度修复

javascript - 匹配正则表达式中的特殊字符和字母

php - 制作类(class)预订系统PHP

php - 合并/合并日期范围的算法

jquery - 克隆背景图像并在文件名中添加括号