Как вызвать файл PHP в AJAX / JavaScript?

У меня есть этот код, который GET php-файл использует метод AJAX. Цель состоит в том, чтобы информировать пользователя, если таблица фильма пуста или нет. Если таблица пуста, отобразится окно подтверждения, которое спросит, хочет ли пользователь добавлять фильмы или нет?

Вот мой файл index.php:

<a href="#" onclick="checkMovieTable('../ajaxphp/moviestbl.php')" title="Movies">Movies</a> 

Вот мой moviestbl.php:

 <?php include ('../phpfunc/connect'); //includes the connection to mysql $checkMovieTable = mysql_query("SELECT * FROM movies ORDER BY title ASC") or die("Table not found"); $countRows = mysql_num_rows($checkMovieTable); if($countRows == 0){ ?> <script language="JavaScript"> var option = confirm("No Movies found. Add Movies now?"); if(option ==true){ //redirect to another page window.location = "../addmedia.php?add=movies"; } else{ //do nothing. return to current window. } </script> <?php } ?> 

И, наконец, вот мой файл AJAX.

 <script> /*connect to database then count the table, if it's zero, dispLay a confirmation box*/ var XMLHttpRequestObject = false; if(window.XMLHttpRequest){ XMLHttpRequestObject = new XMLHttpRequest(); } else if(window.ActiveXObject){ XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); } function checkMovieTable(dataSource){ //get data from the server //onreadystatechange = stores a function var obj = document.getElementById("readystate"); XMLHttpRequestObject.open("GET", dataSource); XMLHttpRequestObject.onreadystatechange = function() { if(XMLHttpRequestObject.status == 200){ obj.innerHTML = XMLHttpRequestObject.responseText; } } XMLHttpRequestObject.send(null); } </script> 

Когда я нажимаю ссылку, она ничего не делает или ничего не отображает. нужна помощь. Благодарю.

Related of "Как вызвать файл PHP в AJAX / JavaScript?"

Вам нужно будет получить данные с сервера с помощью ajax-запроса, ответ может быть в формате JSON.

Предложения.

  1. использовать jQuery и $ .ajax – для вытягивания данных с сервера
  2. при получении ответа – сделайте окно подтверждения и переключения

Вы можете структурировать логику для обработки определенных логик на клиенте и сервере

  • PHP: логика на сервере может быть создана и интерфейс для ответа с результатом JSON для статуса записей в таблице фильмов. ваш текущий запрос должен работать нормально.

  • Javascript: используйте интерфейс, определенный на php, чтобы запрашивать данные и использовать «подтверждающий» javascript для переключения.

Прямо сейчас, если вы измените

 <a href="#" onclick="checkMovieTable('../ajaxphp/moviestbl.php')" title="Movies">Movies</a> to <a href="/ajaxphp/moviestbl.php" title="Movies">Movies</a> 

Вы должны увидеть, как он работает с перезагрузкой страницы и перенаправлением.

Это, вероятно, будет работать лучше:

 <?php include ('../phpfunc/connect'); //includes the connection to mysql $checkMovieTable = mysql_query("SELECT * FROM movies ORDER BY title ASC") or die("Table not found"); $countRows = mysql_num_rows($checkMovieTable); if($countRows == 0){ echo "empty"; } ?> 

 <script> /*connect to database then count the table, if it's zero, dispLay a confirmation box*/ var XMLHttpRequestObject = false; if(window.XMLHttpRequest){ XMLHttpRequestObject = new XMLHttpRequest(); } else if(window.ActiveXObject){ XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); } function checkMovieTable(dataSource){ //get data from the server //onreadystatechange = stores a function var obj = document.getElementById("readystate"); XMLHttpRequestObject.open("GET", dataSource); XMLHttpRequestObject.onreadystatechange = function() { if(XMLHttpRequestObject.status == 200){ obj.innerHTML = XMLHttpRequestObject.responseText; if(XMLHttpRequestObject.responseText === "empty"){ var option = confirm("No Movies found. Add Movies now?"); if(option == true){ //redirect to another page window.location = "../addmedia.php?add=movies"; } else{ //do nothing. return to current window. } } } } XMLHttpRequestObject.send(null); } </script> 

Мне удалось запустить код. Благодаря Firebug и кофе. Проблема с якорной меткой. Я не знаю почему, но когда я использовал img, это сработало.

 <img alt="movies" style="cursor:hand;cursor:pointer;" onclick="checkMovieTbl('/movies/ajaxphp/moviestbl.php')"/> 

Файл сценария PHP :

 <?php //fetch the data from the table movies include '../phpfunc/connect.php'; $checkMovieTable = mysql_query("SELECT * FROM movies ORDER BY title ASC") or die("Table not found"); $countRows = mysql_num_rows($checkMovieTable); $json = json_encode($countRows); if($json == 0){ echo $json; } ?> 

И, наконец, файл AJAX .

 var XMLHttpRequestObject = false; if (window.XMLHttpRequest) { XMLHttpRequestObject = new XMLHttpRequest(); } else if (window.ActiveXObject) { XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); } function checkMovieTbl(url){ //if not false if(XMLHttpRequestObject){ XMLHttpRequestObject.open("GET", url, false); //not sync XMLHttpRequestObject.onreadystatechange = function(){ if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200){ var response = XMLHttpRequestObject.responseText; //alert(XMLHttpRequestObject.responseText + "readyState:" + XMLHttpRequestObject.readyState + "\nStatus:" +XMLHttpRequestObject.status); if(response==0){ //execute something here } } else{ alert(XMLHttpRequestObject.responseText + "readyState:" + XMLHttpRequestObject.readyState + "\nStatus:" +XMLHttpRequestObject.status); } } XMLHttpRequestObject.send(); } } 

Спасибо всем, кто ответил на мои вопросы и помог мне. Цзяо!