如何通过javaScript / jquery从php获取多个返回值?

时间:2016-08-03 16:54:22

标签: javascript php json

这是我的javaScript代码:

$(document).ready(function() {
    $('#IMDB').click(function() {  
       var MovieID = $('#MovieID').val();

       $.post('action/action.php', { url: "http://api.themoviedb.org/3/movie/"+MovieID
+"?append_to_response=credits,images&api_key=myapikey" }, function(data) {
           $("#test").html(data);
       });
    });
});

当我点击按钮时,我从我输入的输入字段中获取了imdb id 然后我从php获得实际结果。这是我的PHP代码。

<?php 
    $url = $_POST['url'];
    $url2 = file_get_contents($url);
    $json = json_decode($url2, true); //This will convert it to an array
    $title = $json['original_title'];
    $imdb = $json['imdb_id'];

    echo $title;
    echo $imdb;

    return true;

?>

但我得到的结果如下:

  

蝙蝠侠:杀戮Jokett4853102

一个是电影标题,另一个是同一个html tage中的imdb id。但我想在每个html标签中显示我的每个结果,如下所示:

$("#test").html(data); // result 1  -- movie title
$("#test2").html(data); // result 2 --- imdb id

请帮助我如何获得多重价值?

2 个答案:

答案 0 :(得分:7)

输出整个JSON结构并在Javascript中使用它可能是最简单的,但是如果你只想要标题和id,请将你的个人echo调用更改为带有哈希的那个:

header('Content-Type: application/json');
echo json_encode(array(
  'title' => $title,
  'id' => $imdb
));

然后您可以使用以下命令在javascript中引用它们:

var id = data.id;
var title = data.title;

答案 1 :(得分:1)

您只需返回一个数组而不是分隔值:

return json_encode([$title,$imdb]);

然后在你的js中解析返回的数据并从中获取你想要的属性:

data = JSON.parse(data);

$("#test").html(data[0]); 
$("#test2").html(data[1]);

或者您可以在json请求中添加$.post,而不必解析返回的数据:

$.post('action/action.php', { url: ...}, function(data) {
    $("#test").html(data[0]); 
    $("#test2").html(data[1]);
}, "json");
//__^^^^__

希望这有帮助。