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 中。

现在我收到以下内容:

["image.jpeg","image.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 回答