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