javascript - 无法使用 AJAX + Wordpress 解析 xml 数据
问题描述
好吧,我被正式难住了。我一直在试图找出为什么我对 PubMed xml 数据文件中特定项目的调用不起作用......我可以用我当前的编码执行这个:
$test = (string)$id_json->PubmedArticle->MedlineCitation->PMID;
但是如果我尝试获取更深数组中的变量,它不会返回值。我什至用 console.log(data) 进行了测试,我得到了我的 PMID,但不是我在 XML 文件中的其他更深的值。例如;
$test = (string)$id_json->PubmedArticle->MedlineCitation->Article->Journal->ISSN;
不返回任何数据console.log(data)
这是我在wordpress中的功能:
function get_abstract(){
$id = $_POST['abstractid'];
$pubmed_api_call = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&retmode=xml&rettype=abstract&id='.$id;
$id_wpget = wp_remote_get($pubmed_api_call, array('timeout' => 20));
if( is_wp_error( $id_wpget ) ) {
echo "Error Contacting PubMed, please refresh page and try again";
die();
}
$id_xml = wp_remote_retrieve_body($id_wpget);
$id_json = simplexml_load_string($id_xml);
$test = (string)$id_json->PubmedArticle->MedlineCitation->Article->Journal->ISSN;
if($test === ""){
echo "NOTHING";
die();
}
echo $test;
die();
}
这是我的 javascript AJAX 调用:
jQuery(document).ready(function() {
jQuery('.reference_header').click(function(e) {
jQuery(this).find("i").toggleClass("arrow-down arrow-up");
jQuery(this).nextUntil('.reference_header').slideToggle('fast');
var abstractid = jQuery(this).data("id");
e.preventDefault();
jQuery.ajax({
url: get_abstract.ajaxurl,
type: 'POST',
dataType: 'json',
data: {
abstractid: jQuery(this).data("id"),
action: 'get_abstract'
},
success : function(data){
jQuery('.'+abstractid).html("TESTING: "+data);
console.log(data);
}
});
});
});
我不知道为什么它不起作用......非常感谢任何帮助。
解决方案
所以我想出了问题的解决方案...您需要将字符串文本作为 json 对象传递给 AJAX 以使其正确读取...
工作代码:
PHP:
echo json_encode(array("result" => "$test"));
die();
阿贾克斯:
success : function(data){
jQuery('.'+abstractid).html("TESTING: "+data.result);
console.log(data.result);
}
推荐阅读
- imagemagick - 强制图像魔法识别以 MB 为单位显示输出大小
- android - 具有多个按钮 OnClickListener 的 RecyclerView
- swift - 在后台线程上读取领域
- angular - 测试时是否可以在不使用@ViewChild 的情况下获得对局部变量的引用?
- java - 根据结果重试方法(而不是异常)
- sql - 在一条记录中结合 2 个不同的属性来查找一个集合
- c# - 如何记录 Where 方法的结果?
- sql - 使用条件返回特定行
- excel - VBA Excel 2016根据另一列的值将一列中的表头粘贴到新表中
- php - PHP 用 xlsxwriter / ajax / 导出 xlsx 文件