Триггер кнопки PHP и JQuery не работает - PullRequest
0 голосов
/ 17 декабря 2011

В настоящее время я новичок в PHP и JQuery после двухлетнего использования ASP.Net и C Sharp. У меня есть эта серьезная проблема, в которой мне нужна помощь.

У меня есть кнопка HTML <input type="submit" id="btnWL" value="Add to Wishlist">. В основном, когда эта кнопка нажата, в базе данных проверяется таблица под названием «список желаний», чтобы увидеть, есть ли текущий продукт в списке пожеланий. Если кнопка не активирует сохранение базы данных, в противном случае она выдаст всплывающее сообщение об ошибке JQuery.

У меня возникли трудности с передачей 2 переменных PHP: $_SESSION["username"] и $_GET["ProductId"] в этот метод JQuery:

<script type="text/javascript">
            $(document).ready(function() {
                $('#btnWL').live('click', function() {
                    $.post("addToWishlist.php"); 
                });
            });
</script>

Как вы можете видеть, этот метод JQuery должен передавать эти значения во внешний файл PHP, который проверяет наличие уже существующей записи в таблице 'wishist' с этими подробностями.

<?php    

    $WishlistDAL = new WishlistDAL();
    $result = $WishlistDAL->get_ProductInWishlistById($_GET["ProductId"]);

    if (isset($_POST["isPostBack"])) {
     if (isset($_SESSION["username"])) {
        if (isset($_GET["btnWL"])) {            
            //Check if ProductId is in Cart            
            if (mssql_num_rows($result)>0)
            {
                //Return an error
                //Sumhow this has to trigger an alert box in the above JQuery method

            }
            else
            {
                //Write in Wishlist Table
                $WishlistDAL->insert_ProductInWishlist($_GET["ProductId"], $_SESSION["username"]);                
            }        
        }    
      }
      else
      {
          //Return Error
      }      
    }
?>

Другая проблема, с которой я столкнулся, - это отображение окна предупреждения с использованием того же метода JQuery для любых ошибок, которые были сгенерированы в файле php.

Есть идеи, как я могу реализовать эту логику? Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 17 декабря 2011

jQuery принимает обратный вызов:

$(document).ready(function() {
     $('#btnWL').live('click', function() {
          $.post("addToWishlist.php", {'isPostBack':1}, function(res){
            if (res.match(/err/i)){
              alert(res);
            }
          }); 
     });
});

Затем в php просто (echo ('Ошибка добавления записи')) для этого jquery, чтобы увидеть строку ответа в ответе, и всплывающее окносообщение об ошибке.

Другими методами могут быть коды состояния json или http и $.ajaxError(function(){ alert('error adding'); });.

.
0 голосов
/ 17 декабря 2011

из того, что я могу сказать до сих пор, вам нужно будет только ввести идентификатор продукта, и вы можете сделать это, добавив ваш вызов $ .post со значением; это передаст вашему php-скрипту переменную строки запроса. Я не уверен, какой php-скрипт вы разместили, но если вы отправляете свои данные с помощью jquery, он использует post, а не get, поэтому вам, возможно, придется внести коррективы в него, и данные сеанса должны быть доступны независимо, так как это тот же сеанс.

опять же, это не виден весь код, и, поскольку часть кода не помечена, это трудно определить. Во-вторых, мне нравится использовать $ .ajax для большинства подобных действий, у вас гораздо больше возможностей для определения и структурирования, а также для создания одной универсальной функции ajax для вызова методов и публикации данных, а также для ответного обратного вызова. , Вот документация для вас $. ajax

Надеюсь, это поможет.

0 голосов
/ 17 декабря 2011

Ваш вызов $ .post () не передает никаких параметров и не имеет обратного вызова для интерпретации результатов:

$.post('addToWishlist.php', { username: something, password: something }, function (response) {
});

«Что-то» и «что-то», вероятно, появятся в ваших полях ввода, поэтому:

$.post('addToWishlist.php', { username: $('#username').val(), password: $('#password').val() }, function (response) {
});

Теперь функция обратного вызова будет интерпретировать ответ от сервера:

$.post('addToWishlist.php', { username: $('#username').val(), password: $('#password').val() }, function (response) {
  if (response === "FAIL") {
    alert("fail");
  }
  else {
    // ... whatever ...
  }
});

То, что это делает, зависит от кода вашего сервера; этот ответ «FAIL» - это то, что я просто выдумал в качестве примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...