2012-12-20 29 views
8

我在路过使用POST方法变量,AJAX.JqueryjQuery的AJAX POST不及格什么PHP

这里的一个问题是我的代码:

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 />'); 
     } 
    }) 

为何如此? 我的代码有什么问题?请指教! 非常感谢。

回答

8

data应具有以下格式:

它不使用JSON工作,因为成功的参数名称是错误的。这不符合回调中的代码。
将其从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 />'); 
     }; 

    } 
}); 
+0

这一个是工作,但我怎么把我的变量为数组? – aleXela

+0

你正在发送一个字符串,它不必被称为数据。这就是参数的工作原理,只要函数能正确引用它,你可以在parens中调用它们。 – thescientist

+0

吨谢谢!!!!! 根据需要工作! – aleXela

3

不同之处在于,在非工作示例中,您正在发送一个字符串,并且在工作示例中发送了一个对象。因此,请在您的非实际示例中发送相同的对象。

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

    } 
}) 
+0

非常感谢!这一个一样! – aleXela

+0

@alexela没有问题 – thescientist

0

URL字段具有可使得它不工作 这样结尾的斜线:

url:'mypath/' 

必须是:

url:'mypath'