1

PHP 関数から ajax 呼び出しに配列を返したい。その後、ajax呼び出しが行われたページの配列値を使用したいと思います。

これは私のajax呼び出しです:

        $(function() {
        $("#find").click(function() {

            var url = $("#form_url").val();
            var dataString = 'url=' + url;

            $.ajax({
                type: "POST",
                url: "/ajax/add_url.php",
                data: dataString,
                }).done(function( result ) {
                    myresult(result);
            });

            return false;
        });
    });


 function myresult(result) {
var result_lines = result.split("<splitter>");    
if (result_lines[0] == '1') { 
    $('#content_error').html(result_lines[1]).fadeIn(250);
    $('#content_error').delay(1500).fadeOut(500);
} else if (result_lines[0] == '2') { 
    $('#content_success').html('Succesfully get images').fadeIn(250);
    $('#url_result').delay(500).fadeIn(500);
    $('#content_success').delay(1500).fadeOut(500);
    alert(eval(data));
}
return true;   

}

これは私のphpスクリプトです:

 if($_POST['url']) {

    $url = $Db->escape($_POST['url']);

        $html = file_get_html($url);
        $count = 0;
        $goodfiles = array();

        foreach($html->find('img') as $element) {

            $pic = url_to_absolute($url, $element->src);

            if(!empty($pic)){

                $pics = parse_url($pic);
                list($width, $height, $type, $attr) = getimagesize($pic);

                if($pics["scheme"]=="http" && $width >= 300 && $height >= 250) {

                    array_push($goodfiles,$pic);
                    $_SESSION['pictures'] = $goodfiles;
                    $count++;

                }
            }
      }


        if($count == 0){ 

            $_SESSION['count'] = 'empty'; 
            echo "1<splitter>"; 
            echo "No items found with the correct size"; 


        }else{

            $_SESSION['count'] = $count;
            echo "2<splitter>";
            echo json_encode($_SESSION['pictures']); 

        }

            $_SESSION['url'] = $url;
            $html->clear();
            $empty = 1;
    }

  }

ajax 呼び出しが成功したら、配列で json_encode を使用して、php ページで使用します。しかし、この配列を、ajax 呼び出しが行われたページの JavaScript に取得する方法がわかりません。

現在、次のコンテンツを受信して​​います。

["画像.jpeg","画像.jpg"]

そして、これをJavaScript配列に入れたい...

4

2 に答える 2

2

エラーは次の行です。

var result_lines = result.split("<splitter>");

result(AJAX 応答) は (JSON の性質に応じて) オブジェクトまたは配列ですが、文字列メソッド ( split()) を呼び出そうとしています。

これにより、JS コンソールでエラーが発生します。常にコンソールを確認してください

最後に、eval()悪であり、例外的な状況を除いてほとんど必要ありません。それを避けるようにしてください。

于 2012-08-18T23:11:23.803 に答える
0

$.ajax の操作方法がわかりませんが、別の方法があります。

これを交換

$.ajax({
                type: "POST",
                url: "/ajax/add_url.php",
                data: dataString,
                }).done(function( result ) {
                    myresult(result);
            }); 

$.post("/ajax/add_url.php",{dataString:dataString},function(data){
           alert(data['you array index']);
},'json')

繰り返しますが、これは私の代替手段なので、難しく考えないでください。

于 2012-08-18T23:05:13.643 に答える