将数组从php返回到ajax成功

时间:2012-08-18 22:59:25

标签: ajax arrays json

我想从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数组......

2 个答案:

答案 0 :(得分:2)

错误就是这一行:

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

result(AJAX响应)是一个对象或数组(取决于您的JSON的性质),但您正在尝试在其上调用字符串方法(split())。

这会导致JS控制台出错 - 总是检查控制台

最后,eval()是邪恶的,几乎从不需要,除非在特殊情况下。尽量避免它。

答案 1 :(得分: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')

我再说一遍,这是我的另类选择,所以不要太费劲!