2015-10-05 63 views
2

我试图加载JSON数据与AJAX,但它不起作用。每次ajax调用错误函数并且不调用成功函数。加载JSON数据与AJAX和PHP

我的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的interessing部分:

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

是否写 “错误”,在控制台? console.log(“error”,jqXHR,textStatus,errorThrown);在错误回调中打印? – lisztomania

+0

不确定,但你可以尝试用'data:{'id':id','action':'update'}替换'data:'id ='+ id +'&action = update','' –

+0

是的控制台显示错误然后警报(textStatus)显示:“parsererror”和警报(errorThrown)显示:“synthaxError:意外的令牌<” – onedkr

回答

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(); 
    }, 
+0

我已经尝试过,不幸的是它不工作太:/ – onedkr

+0

你确定PHP脚本打印出来的唯一想法是JSON吗?也许在回声后添加一个die()来测试? – sanderbee

+0

是的,我确定这就是为什么我找不到解决方案。 add die(); ajax不调用成功或错误函数并在控制台中显示:“Uncaught SyntaxError:意外的标记o” – onedkr