2010-04-26 75 views
0

我無法使AJAX/JSON函數正常工作。我從一個下拉框中獲得了該函數的抓取值,但現在我想使用錨標籤來設置它的值。JSON onFailure問題

我認爲只需使用onClick事件將字符串傳遞給我用於下拉框的函數將很容易,但即使將數據添加到MySQL中,我也會收到JSON onFailure事件中的警報。我嘗試從onFailure事件中刪除警報,但不添加數據。下降仍然繼續工作正常,沒有警報。 (我要指出,消除警報也打破了我的下拉框)

月1日我加入onClick事件...

<a href="<?php echo Settings::get('app.webroot'); ?>?view=schedule&action=questions" onmouseout="MM_swapImgRestore();" onmouseover="MM_swapImage('bre','','template/images/schedule/bre_f2.gif',1)" onclick="assignCallType('testing')";> 

第二我檢查main.js.php

function assignCallType(type) { 
    alert(type); 
    new Request.JSON({ 
     url: "ajax.php", 
     onSuccess: 
      function(rtndata,txt){ 
       if (rtndata['STATUS'] != 'OK') 
        alert('Status was not okay'); 
      }, 
     onFailure : 
      function() { 
      alert("onFailure") 
      } 
    }).get({ 
     'action': 'assignCallType', 
     'call_type': type 
    });  
} 

3阿賈克斯.PHP:變量是早在PHP和價值觀被添加到MySQL,但我得到的警報在JSON onFailure處事件

if ($_GET['action'] == "assignCallType") { 
    if ($USER->isInsideSales()) { 
     $call_type = $_GET['call_type']; 
     $_SESSION['callinfo']->setCallType($call_type); 
     $_SESSION['callinfo']->save($callid); 
     echo json_encode(array('STATUS'=>'OK')); 
    } else { 
     echo json_encode(array('STATUS'=>'DENIED')); 
    } 
} 

任何想法我錯了。這與工作下降之間唯一的區別是函數的調用方式,我使用onchange="assignCallType(this.value)"

回答

0

onFailure的回調是否提供了任何參數?例如在jQuery中有3個參數可以給你關於錯誤的信息。我碰到類似的問題,即使沒有連接錯誤,error回調也不斷被調用。這個問題原來是JSON格式不正確。你能確認你的JSON格式嗎?

UPDATE

我剛剛簽出的文檔Request,發現onFailure可以在其簽名xhr。請嘗試查看XMLHttpRequest對象的status,statusTextresponseText屬性。這會給你一個線索,看看出了什麼問題。

試試這個:

onFailure: function(xhr) { 
    console.log(xhr.status, xhr.statusText, xhr.responseText); 
} 
+0

我認爲您的權利 - 但是我不下拉框中得到錯誤......另外,如果我離開了onFailure處一起我不會添加數據到mySQL,對不起,我不明白Mootools足以檢查XMLHttpRequest對象。 – Mikey1980 2010-04-26 17:34:18

+0

即使我有onFailure做任何事情,但警報它不會添加數據...男人我很困惑。 – Mikey1980 2010-04-26 17:36:30

+1

嘗試將onFailure處理程序更改爲我在上面顯示的答案中。 – 2010-04-26 17:43:26