【发布时间】:2019-06-30 08:11:10
【问题描述】:
我正在尝试通过 Wordpress 中的 ajax get 请求获取数据,我在 javascript 中编写了一个脚本,在 php 中编写了另一个脚本来处理它。
javascript的代码如下:
window.loadServices = function loadServices(){
var data = {
action: 'get_services',
perpage: '6',
};
$.ajax({
type: 'GET',
url: sendbooking.ajaxurl,
data: data,
dataType: 'json',
success: function (response) {
post = response.data;
console.log(response);
$.each(post, function(){
elem = $(this)[0];
media = elem._links['wp:featuredmedia']
var media_href;
$.each(media, function(){
media_href = $(this)[0].href;
})
// console.log(elem);
var image;
$.ajax({
type: 'GET',
url: media_href,
dataType: 'JSON',
success: function(data){
image = data.source_url;
},
async: false,
})
$('.services .elements .elements-container').append(
$('<div />', {
class: 'loader',
}).append(
$('<img />', {
src: '/wp-content/themes/farmhouse/assets/images/loader.gif'
})
)
)
setTimeout(function(){
$('.loader').fadeOut();
}, 2000);
$('.services .elements .elements-container').append(
$('<div />', {
class: 'element '+elem.type,
}).append(
$('<a />', {
href: elem.link
}).append(
$('<div />', {
class: 'element-image',
}).append(
$('<img />', {
src: image,
})
)
)
).append(
$('<h5 />', {
class: 'element-title',
}).append(
$('<a />', {
href: elem.link,
text: elem.title.rendered
})
)
)
)
setTimeout(function(){
$('.loader').remove();
}, 2000);
})
},
});
}
这是 php 的代码:
if(!function_exists('get_services')):
function get_services(){
$data = $_GET;
$json_feed = get_site_url() . '/wp-json/wp/v2/service?per_page='.$data['perpage'];
$json = file_get_contents($json_feed);
$json_decoded = json_decode($json);
wp_send_json_success($json_decoded);
}
add_action('wp_ajax_get_services', 'get_services');
add_action('wp_ajax_nopriv_get_services', 'get_services');
endif;
我遇到的问题是在本地主机上,这工作正常,我得到了我需要的内容,没有任何问题。当我要在线部署站点时,ajax 不会检索任何内容。抛出console.logs,我注意到从api url(file_get_contents)获取数据时脚本失败,但如果你直接通过浏览器的地址栏或邮递员去那里,数据会正确提供。 (可以测试:http://www.dsoftwarelab.it/ilpiastrino/wp-json/wp/v2/service?per_page=6)。
我真的不知道如何解决它,因为我真的尝试了一切。
【问题讨论】:
标签: json ajax wordpress rest api