我想从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数组......
答案 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')
我再说一遍,这是我的另类选择,所以不要太费劲!