2013-06-23 147 views
0

我打電話給YUI函數從php函數中獲取狀態消息,該消息返回json格式的正確狀態。語法錯誤意外令牌u Json錯誤

當我觸發事件中提供錯誤消息: -

「語法錯誤意外的標記U」

這裏是來源: -

var ajax_url = 'initcalls.php?action=ping'; 
var pngbtn = Y.one('#id_solr_btn_ping'); 
    pngbtn.on('click', function(e) { 

      Y.one('#solr_ping_status').setHTML('&nbsp;<img src="pix/ajax-circle.gif">'); 
      Y.io(ajax_url, { 
      on : { 
       success : function(data) { 
     try 
     { 
       var resp = Y.JSON.parse(data.responseText); 
        } 
     catch (e) 
        { 
          alert(e); 
          return; 
        } 
     if (resp.status == 'ok') { 
      Y.one('#solr_ping_status').setHTML('&nbsp;<img src="pix/success.png">'); 
      timeout("clearSaveStatus('#solr_ping_status')",2000); 
     } 
     else { 
     Y.one('#solr_ping_status').setHTML('&nbsp;<img src="pix/warning.png">'); 
     }} 
     } 
       }); 

      return false; 

      }); 

我的PHP文件返回以下結果: -

 {"status":"ok"} 
+2

你確定'data.responseText'中包含的確切的完整響應是'{「status」:「ok」}?似乎PHP可能正在發送其他內容,也許是錯誤消息。 –

+0

我嘗試了這個簡單的PHP頁面,並且它的返回正是我們應該預期的。<?php $ arr = array(); $ arr ['status'] ='ok'; print(json_encode($ arr)); \t exit(); ?> – user2475624

回答

1

回調Y.io接收兩個參數TER值:交易的ID,並在第二個參數響應對象:

Y.io(url, { 
    on: { 
    success: function (id, response) { 
     // ... 
    } 
    } 
}); 

你得到的錯誤可能是因爲你所訪問的idresponseText屬性,它是不確定的。未定義的值被強制爲"undefined"字符串,遇到u在「未定義」時拋出。

您只需要使用第二個參數作爲您的data對象。

+0

非常感謝你救了我:) – user2475624

+0

是他們的任何方式來傳遞參數的數組將被用於PHP文件? GET請求URL中除外? – user2475624

+0

是的,您可以將數據屬性添加到IO請求的配置對象中,以將參數發送到服務器。您應該閱讀[IO用戶指南](http://yuilibrary.com/yui/docs/io/#the-configuration-object)。 – juandopazo