メタ ボックスで ajax 呼び出しを行い、非常に単純なデータを返しています。ただし、エラーがスローされ続けます。
parsererror
SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
ajax 呼び出しは次のとおりです。
uid = new Date().getTime();
appReq = jQuery.ajax({
type : 'post',
dataType : 'json',
url : 'admin-ajax.php',
data : { action : 'get_app_sidebars', post_id : currentApp, uid : uid }
});
appReq.done(function(data){
if(data.widgetNum > 0 && data.widgetName != '' && data.widgetBase != '') {
alert(data);
}
else {
// do something here
}
});
appReq.fail(function(jqXHR, textStatus, errorThrown){
alert(textStatus + '\n' + errorThrown);
});
そして、ここにphpがあります:
function get_app_sidebars(){
// get the meta for a custom post type
$meta = $this->get_app_meta($_REQUEST['post_id']);
$result['widgetNum'] = $meta['num_widgets'];
$result['widgetName'] = $meta['widget_name'];
$result['widgetBase'] = $meta['widget_base'];
$result = json_encode($result);
echo $result;
}
データを取り戻すと問題が発生します。
{"widgetNum":"6","widgetName":"Custom Sidebars","widgetBase":"my-custom-sidebars"}0
わかりました、最後の「0」は、これをfirebugで見ると応答にあります。これは私を夢中にさせており、ブラウザに送信されているJSONでWTFが進行していることを理解できません。0 をトリミングして jsonlint で実行すると、合格します。