使用AJAX和PHP加载Json数据

时间:2015-10-05 14:25:24

标签: javascript php jquery json ajax

我正在尝试使用ajax加载json数据,但它不起作用。每次ajax调用错误函数并且不调用成功函数。

我的AJAX电话:

$(document).on("click", "#myMovies .btn-update", function() {
  var id = $(this).parent().data("id");

  $.ajax({
   url : 'index.php',
   type : 'POST',
   dataType: 'json',
   data : 'id=' + id + '&action=update',
   success : function(data){
      $('#updateMovie')
            .find('[name="title"]').val(data.title).end()
            .find('[name="list"]').val(data.list).end();
   },
   error : function(jqXHR, textStatus, errorThrown){
      console.log("error");
      alert(textStatus);
      alert(errorThrown);
   }

  });
});

index.php的转发部分:

else if($_POST['action'] == "update") {
   /*getSpecificMovie($_POST['id']);
   $movies = getSpecificMovie();
   $results = Utils::secureMoviesJSON($movies);
   echo $results;*/

   header("Content-Type: application/json", true);
   $array = array(
     'title' => 'test',
     'list' => 'test');
   echo json_encode( $array, JSON_FORCE_OBJECT );
}

任何人都知道我的错误在哪里? 谢谢你的回答。

1 个答案:

答案 0 :(得分:0)

我认为问题出在' JSON_FORCE_OBJECT'选项。请求所期望的数据类型是json字符串。将JSON_FORCE_OBJECT添加到json_encode函数时,json字符串对请求无效。

else if($_POST['action'] == "update") {
   /*getSpecificMovie($_POST['id']);
   $movies = getSpecificMovie();
   $results = Utils::secureMoviesJSON($movies);
   echo $results;*/

   header("Content-Type: application/json", true);
   $array = array(
     'title' => 'test',
     'list' => 'test');
   echo json_encode( $array);
   die();
}

还要将json的解析器添加到您的javascript(parseJSON):

success : function(data){
    data = $.parseJSON(data);
      $('#updateMovie')
            .find('[name="title"]').val(data.title).end()
            .find('[name="list"]').val(data.list).end();
   },