2012-12-20 33 views
8

Tôi đang gặp một vấn đề thông qua biến sử dụng phương thức POST với AJAX.JqueryJquery AJAX POST không đi qua bất cứ điều gì để PHP

Đây là mã của tôi:

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> 

Mã này không hoạt động.

Nhưng cái này làm: (nhưng không phải với 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 />'); 
     } 
    }) 

tại sao rất ?! Có gì sai trong mã của tôi? làm ơn cho lời khuyên! Cảm ơn rất nhiều.

Trả lời

8

data nên có định dạng sau:

Nó không làm việc với json vì tên tham số success là sai. Nó không theo mã bên trong gọi lại.
Thay đổi từ results thành 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

Cái này đang làm việc, nhưng làm thế nào tôi vượt qua của tôi biến thành mảng? – aleXela

+0

bạn đang gửi một chuỗi và không cần phải gọi là dữ liệu. Đó là cách các tham số hoạt động, bạn có thể gọi chúng bất cứ điều gì trong các parens miễn là hàm tham chiếu nó một cách chính xác. – thescientist

+0

TẤN CỦA THANKS !!!!! làm việc khi cần thiết! – aleXela

3

Sự khác biệt là trong ví dụ không làm việc, bạn đang gửi chuỗi và trong ví dụ đang làm việc bạn đang gửi một đối tượng. Vì vậy, hãy gửi cùng một đối tượng đó trong ví dụ không làm việc của bạn.

$.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

cảm ơn rất nhiều! cái này! – aleXela

+0

@alexela no prob – thescientist

0

lĩnh vực url có thể chứa dấu gạch chéo có thể làm cho nó không làm việc vậy:

url:'mypath/' 

phải là:

url:'mypath' 
Các vấn đề liên quan