2017-01-27 64 views
1

我想返回一个1717长的令牌,以“==”结尾使用PHP到Ajax。JSON编码发送错误时,发送字符串,结束于==

在PHP中,我将在返回值是这样:

echo json_encode($token); 

在JavaScript中Ajax是:

$.ajax({ 
       type: "GET", 
      dataType:"JSON", 
      url: myajax.ajax_url, 
      data:{ 
       action: "get_token" 
      }, 
      beforeSend: function(){}, 
      success: function(data){ 

      console.log(data); 

      }, 
      error: function(jqXHR, textStatus, errorThrown){ 

       console.warn(jqXHR.responseText) 
       alert(jqXHR + " :: " + textStatus +" :: " +errorThrown); 

      } 
    }); 

我recieving的错误是:

语法错误:在意外的数Json在位置1718

我看看PHP日志和令牌匹配chrome中的错误消息中显示了什么,但我仍然收到此消息。

我可以采取一个随机数,它会通过罚款,但如果我使用生成的令牌失败。

我该如何解决此问题。

+1

是否'json_encode()''回报或string''FALSE'?对于你的问题** ** ADD **仅仅是char 1718'上的json是不是很重要? – Xorifelse

+0

返回true,我可以将它打印到错误日志中。经过进一步检查,看起来函数或传输在编码结尾添加了0。所以它似乎“encodeddata”0 – Brett

回答

0

问题是我在Wordpress框架中,并且需要使用wp_send_json()来返回currect值,否则它会在引发错误的json数据的末尾添加0。

正确的说法应该是:

echo wp_send_json($token); 
+0

这将是,假设他使用[tag:wordpress],因为我没有看到他的标签。 – Xorifelse