9

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

なぜそうなのか?!私のコードの何が問題になっていますか?ご意見をお聞かせください!どうもありがとう。

4

3 に答える 3

8

data次の形式である必要があります。

data: {
    'dir': dir
}

成功パラメータ名が間違っているため、jsonでは機能しません。コールバック内のコードによるものではありません。からに
変更します。resultsdata

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

    }
});
于 2012-12-20T00:12:28.597 に答える
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 />'); 
        };

    }
})
于 2012-12-20T00:13:52.233 に答える
0

url フィールドの末尾にスラッシュがあるため、機能しない可能性があります。

url:'mypath/'

する必要がありました:

url:'mypath'
于 2016-09-29T14:45:22.953 に答える