2013-06-25 16 views
0

我一直在嘗試利用jQuery在此jQuery.post,因爲我需要從我執行的PHP返回兩個值。當我沒有實現json時,代碼正在工作。我需要查看輸入的促銷代碼是否對特定經紀商有效。我需要的兩個變量是即時消息,無論它是否有效(這是顯示給用戶的),我需要更新稍後在更新數據庫時使用的隱藏字段。jQuery.post不工作​​時使用數據類型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(); 
    } 

根據要求,這裏是在瀏覽器中登錄了什麼。當我在promocode中輸入時,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] 
+2

瀏覽器控制檯中的任何錯誤 –

+0

使用螢火蟲檢查請求和響應,並在您的問題中更新它。 –

+0

Ugghh ..請不要殺了我 - 就像我說的 - 我一直在尋找這種方式太長時間了......我只是在我的PHP中發現了一些剩餘的調試代碼,它持有這個...代碼實際上起作用..另外 - 謝謝你參考檢查請求和響應 - 我從來沒有使用過這個功能 - 真的很棒的建議。感謝你們倆!! – swift

回答

0

我想我找到了一些有問題的代碼...笑

$promocode = sanitizeMySQL($promocode); 

應該是...

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

Mybae認爲會解決它... :)雖然我不會看到它會如何......因爲如果沒有找到一行,你就會迴應一個錯誤,所以你應該至少在JSON/Jquery方面收到錯誤.....所以更多的是它。

相關問題