PHP / Ajax / jQuery - 相当于我的代码

时间:2009-12-15 23:52:03

标签: javascript jquery ajax

我有以下代码,并希望使用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脚本添加了出价等,并回显了responseText。

2 个答案:

答案 0 :(得分:4)

您已将此问题标记为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");
    }
    ...
  });
}

要从PHP返回一些信息作为JSON使用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);

答案 1 :(得分:2)

JQuery.get就是您所需要的 http://docs.jquery.com/Ajax/jQuery.get