2012-12-20 52 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'