PHP / Ajax / jQuery - эквивалент для моего кода - PullRequest
0 голосов
/ 16 декабря 2009

У меня есть следующий код, и я хотел бы использовать jquery для упрощения:

var auctionBidAjax;

function auctionBid(auction_id) {
  auctionBidAjax=GetXmlHttpObject();
  if (auctionBidAjax==null) {
    alert ("Your browser does not support XMLHTTP!");
    return;
  }
  var url="/cms/ajax/auctionBid.php?auction_id="+auction_id;
  auctionBidAjax.onreadystatechange=function() { auctionBidReady(auction_id); };
  auctionBidAjax.open("GET",url,true);
  auctionBidAjax.send(null);
}

И ...

function auctionBidReady(auction_id) {
  if (auctionBidAjax.readyState==4) {
    if (auctionBidAjax.responseText == "Bid Placed") {
      document.getElementById('auctionBid' + auction_id).innerHTML=
        "<a href=\"javascript:auctionBid("+auction_id+");\">Place Bid</a>";
      userBids();
    } else if (auctionBidAjax.responseText == "Not Logged In") {
      popupCentre('popupLogin');
      popupLoad('popupLogin');
    } else if (auctionBidAjax.responseText == "No Bids"){
      popupCentre('popupNoBids');
      popupLoad('popupNoBids');
    }
  }
}

Мой скрипт PHP добавляет ставку и т. Д. И выводит ответный текст.

Ответы [ 2 ]

4 голосов
/ 16 декабря 2009

Вы пометили этот вопрос как jquery, поэтому вы можете использовать $.ajax():

function auctionBid(auction_id) {
  $.ajax({
    url: "/cms/ajax/auctionBid.php",
    type: "GET",
    data: {
      auction_id: auction_id
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
      // act appropriately
    },
    success: function(data, textStatus) {
      // do whatever
    }
  });
}

Если вам не нужен обработчик ошибок, вы можете использовать вместо него более простую форму $.get():

function auctionBid(auction_id) {
  var url = "/cms/ajax/auctionBid.php";
  $.get(url, { auction_id: auction_id }, function(data, textStatus) {
    // do whatever
  });
}

На самом деле я предпочитаю не использовать обработчики ошибок. Это немного страшнее, чем нужно. Используйте это для фактических ошибок. Такие вещи, как "не авторизован", могут обрабатываться обработчиком успеха. Просто передайте обратно объект JSON, который содержит необходимую информацию, чтобы сообщить пользователю, что произошло.

Для этого вы можете использовать сокращенную версию $.getJSON().

function auctionBid(auction_id) {
  var url = "/cms/ajax/auctionBid.php";
  $.getJSON(url, { auction_id: auction_id }, function(data) {
    if (data.notLoggedIn) {
      alert("Not logged in");
    }
    ...
  });
}

Чтобы вернуть некоторую информацию в виде JSON из PHP, используйте json_encode() и соответственно установите тип MIME:

<?php
session_start();
header('Content-Type: application/json');
echo json_encode(array(
  'highBid' => get_new_high_bid(),
  'loggedIn' => $_SESSION['loggedIn'],
));
exit;
?>

Я делаю предположения о вашей системе входа в систему, поэтому приведенное выше является грубым упрощением.

Верните это в $.getJSON() обратный вызов, и вы сможете сделать:

alert(data.highBid);
alert(data.loggedIn);
2 голосов
/ 16 декабря 2009

JQuery.get - это то, что вам нужно http://docs.jquery.com/Ajax/jQuery.get

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