繁体   English   中英

PHP / Ajax / jQuery-等价于我的代码

[英]PHP/ Ajax/ jQuery - Equivalent for my code

我有以下代码,并希望使用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。

您已将此问题标记为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()返回一些信息,请使用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);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM