我在使用带有
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: {
'dir': dir
}
它不适用于json,因为成功参数名称是错误的.这不是根据回调中的代码.
将其从结果更改为数据.
var dir = 'gals/';
$.ajax({
url: "ajaxtest.PHP",data: {'dir': dir},success: function(data){
data = jQuery.parseJSON(data);
for (var i = 0; i < data.length ; i++) {
$('#buttonA').after('<br />'+data[i]+'<br />');
};
}
});