我一直试图在这个jQuery.post中使用json,因为我需要从执行的php中返回两个值。当我没有实现json时,代码正在工作。我需要看看输入的促销代码是否对特定的经纪人有效。我需要返回的两个变量是即时消息是否有效(这将显示给用户),以及我需要更新一个隐藏字段,该字段将在稍后更新数据库时使用。
jQuery.post似乎根本没有启动,但它正上方的代码(ajax loader.gif)正在运行。
我曾经使用jQuery.ajax重写过整个内容,但也遇到了问题。当然,我可能已经看了太久了,也试着重写了太多次,但我们非常感谢任何帮助!!
这是jQuery.post
<!-- Below Script is for Checking Promo Code Against Database-->
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#promocode").keyup(function (e) {
//removes spaces from PromoCode
jQuery(this).val(jQuery(this).val().replace(/'s/g, ''));
var promocode = jQuery(this).val();
var brokerdealerid = document.getElementById("BrokerDealerId").value;
if(promocode.length > 0 ){
jQuery("#promo-result").html('<img src="../imgs/ajax-loader.gif" />');
jQuery.post(
'../check_promocode.php',
{promocode:promocode, brokerdealerid:brokerdealerid},
function(data) {
$("#promo-result").html(data.promoresult);
$("#promo-result-valid").html(data.promovalid);
},
"json");
}
});
});
</script>
<!-- End Script is for Checking Promo Code Against Database-->
以下是check_promocode.php中的相关代码:
//sanitize incoming parameters
if (isset($_POST['brokerdealerid'])) $brokerdealerid = sanitizeMySQL($_POST['brokerdealerid']);
$promocode = sanitizeMySQL($promocode);
//check promocode in db
$results = mysql_query("SELECT PromotionCodeIdentifier FROM PromotionCode WHERE PromotionCodeIdentifier='$promocode' AND BrokerDealerId='$brokerdealerid' AND PromotionCodStrtDte <= CURDATE() AND PromotionCodExpDte >= CURDATE()");
//return total count
$PromoCode_exist = mysql_num_rows($results); //total records
//if value is more than 0, promocode is valid
if($PromoCode_exist)
{
echo json_encode(array("promoresult"=>"Promotion Code Valid", "promovalid"=>"Y"));
exit();
}else{
echo json_encode(array("promoresult"=>"Invalid Promotion Code", "promovalid"=>"N"));
exit();
}
根据请求,以下是浏览器中的日志。当我输入促销代码时,ajax加载程序只是无限期地显示在那里,并且永远不会返回返回消息。我真的没有看到任何严重的错误。
[00:30:41.985] GET http://localhost:8888/imgs/ajax-loader.gif [HTTP/1.1 304 Not Modified 2ms]
[00:30:42.999] POST http://localhost:8888/check_promocode.php [HTTP/1.1 200 OK 2ms]
[00:30:43.671] POST http://localhost:8888/check_promocode.php [HTTP/1.1 200 OK 2ms]
[00:30:43.976] POST http://localhost:8888/check_promocode.php [HTTP/1.1 200 OK 2ms]
[00:30:44.178] POST http://localhost:8888/check_promocode.php [HTTP/1.1 200 OK 2ms]
我想我发现了一些有问题的代码。。。lol
$promocode = sanitizeMySQL($promocode);
应该是…
$promocode = sanitizeMySQL($_POST['promocode']);
Mybae,那会解决的……:)虽然我不知道会如何。。。。因为如果找不到行,您将回显一个错误,所以您至少应该在JSON/Jquery端收到该错误。。。。。所以它还有更多。