php - Jquery AJAX POST 没有将任何东西传递给 PHP

标签 php jquery ajax

我在使用 AJAX.Jquery 的 POST 方法传递变量时遇到问题

这是我的代码:

ajaxtest.php

<?php 
  $dir = $_POST['dir'];
  $scaned = glob($dir."*",GLOB_ONLYDIR);    
  echo json_encode($scaned);
?>

ajaxtest.html

<html>
<head>

<script type="text/javascript" src="js/jquery.js"></script>

</head>
<script>

$(document).ready(function(){
$('button[type="button"]').click(function(){
    var dir = 'gals/';
    $.ajax({
        url: "ajaxtest.php",
        type: "POST",
        data: dir,
        success: function(results){
            data = jQuery.parseJSON(results);
            for (var i = 0; i < data.length ; i++) {
                $('#buttonA').after('<br />'+data[i]+'<br />'); 
            };

        }
    })
})

})
</script>
<body>
<br />
<button id="buttonA" type="button">Test button</button>

</body>
</html>

此代码无效。

但是这个可以:(但不是用 json)

$.post("ajaxtest.php", {dir:dir}, function(results){
        var data = $.parseJSON(results);
        for (var i = 0; i < data.length ; i++) {
            $('#buttonA').after('<br />'+data[i]+'<br />'); 
        }
    })

为什么会这样?! 我的代码有什么问题?请指教! 非常感谢。

最佳答案

data 应具有以下格式:

data: {
    'dir': dir
}

它对json不起作用,因为success参数名是错误的。不是根据回调里面的代码。
将其从 results 更改为 data

var dir = 'gals/';
$.ajax({
    url: "ajaxtest.php",
    type: "POST",
    data: {'dir': dir},
    success: function(data){
        data = jQuery.parseJSON(data);
        for (var i = 0; i < data.length ; i++) {
            $('#buttonA').after('<br />'+data[i]+'<br />'); 
        };

    }
});

关于php - Jquery AJAX POST 没有将任何东西传递给 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963340/

相关文章:

php - date_parse_from_format 到 unix 时间戳

javascript - 如何等待 jQuery ajax 请求循环完成?

php - 使用 jquery ajax 进行鼠标移动时从数据库获取重复数据

ajax - 如何从 jQuery.ajax 获取响应状态代码?

javascript - 如何在 <a> 标签中调用 onclick 函数?

php - 跨浏览器异步 uploader ?

jquery - 使用 JSPM 导入 jQuery 插件

jQuery Closest() 不起作用

java - 无法通过 JQuery 进行身份验证

php - 从列表中选择/查看一行