我有一個WordPress頁面下拉列表與'page_id'類(他們重複,可以添加..因此livequery)。在更改事件上,我想發送一個ajax請求來提取所選頁面的標題,摘錄和縮略圖。此刻,我只是試圖獲得任何有效的json響應。我在回調中使用json_encode將json對象返回給我的.ajax函數。然後在.ajax成功函數中,我試圖將這個json對象解析成可用的東西,但每次都會得到一個錯誤。在Wordpress後端JSON.parse返回錯誤
錯誤似乎是JSON.parse一個問題:
JSON.parse
success(response="{"title":"bacon title","message":"bacon text"}0")
handleError(a=Object { url="http://localhost/single/wp-admin/admin-ajax.php", global=true, more...}, b=XMLHttpRequest { onreadystatechange=[xpconnect wrapped nsIDOMEventListener], readyState=4, more...}, d="success", e="{"title":"bacon title","message":"bacon text"}0") onreadystatechange(m=readystatechange)
[Break On This Error] var json = JSON.parse(response);
螢火控制檯說,響應的樣子:
{"title":"bacon title","message":"bacon text"}0
我不知道,如果額外的0是麻煩製造商,但我也不知道它是如何到達那裏。鉻報告錯誤爲:
Uncaught SyntaxError: Unexpected number
$.livequery.$.change.$.ajax.success/single/wp-admin/post.php?post=2&action=edit&message=1:917
這裏是我的jQuery函數:
<script type="text/javascript">
//<![CDATA[
jQuery(function($) {
$('.page_id').livequery(function(){
var loading = $(this).next('img.ajax-loader');
$(this).change(function() {
var value = $(this).val();
if (value.length) {
$(loading).fadeIn();
var data = {
action: 'featured_meta_action',
data: value,
security: '<?php echo wp_create_nonce('featured-ajax-nonce'); ?>',
};
$.ajax({
type: "POST",
data: data,
url: ajaxurl,
complete: function(){
$(loading).fadeOut();
},
success: function(response){
var str = '{ "title": "bar" }';
var json = JSON.parse(response);
alert(json['title']);
},
error: function(){
alert('fail');
}
});
}//end if
}); //end change
}); //end livequery
}); //end ready
/* ]]> */
</script>
我的PHP回調的樣子:
function featured_meta_action_callback(){
$responseVar = array(
'title'=>'bacon title',
'message'=>'bacon text',
);
echo json_encode($responseVar);
}
add_action('wp_ajax_featured_meta_action', 'featured_meta_action_callback');
這已被證明是這樣難度比它看起來像它應該是的。我只需要從PHP函數中獲取數據,這樣我就可以在jQuery中使用它。我哪裏錯了?
0表示問題;它不是JSON對象的一部分,所以jQuery無法解析響應。你需要從http://localhost/single/wp-admin/admin-ajax.php追蹤什麼是輸出0到JSON響應。 – 2011-02-15 00:52:59
換句話說,{「title」:「培根標題」,「消息」:「培根文本」}是該頁面應該返回的內容。 – 2011-02-15 00:53:59