2013-06-23 164 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