0

我一直在尝试在这个 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-loader 只是在那里无限期地显示,并且永远不会返回返回消息。我真的没有看到任何硬错误。

[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]
4

1 回答 1

0

我想我发现了一些有问题的代码...大声笑

$promocode = sanitizeMySQL($promocode);

应该...

$promocode = sanitizeMySQL($_POST['promocode']);

Mybae 会修复它...:) 虽然我不知道它会如何...因为如果找不到行,您会回显错误,所以您至少应该在 JSON 上收到该错误/Jquery 方面.....所以还有更多。

于 2013-06-25T05:49:38.440 回答