我有以下代码,目前正在我的本地机器上运行。我正在调用一个名为getxml.php的php脚本,它应该发送一个xml文件的内容作为响应。
但是,在Firebug中,我发现OPTIONS请求正在发出,而不是GET请求 选项getxml.php 。我想我不是在制作跨域Ajax请求,但仍然面临着这个问题。有什么方法可以解决这个问题吗?
var employee_list = new Object;
$(function(){
$.ajax({
type:"GET",
url:"http://localhost/projectname/getxml.php",
datatype:"xml",
success: function(xml){
$(xml).find('employee').each(function(){
var name_text = $(this).find('name').text();
var url_text = $(this).find('url').text();
employee_list[name_text] = url_text;
$('<li></li>').html(name_text + ' (' + url_text + ')').appendTo('#update-target ol');
});
} //closing function
}); //closing $.ajax
}); //closing $(
getxml.php
<?php
//Send the xml file as response
header('Content-type: text/xml');
readfile('employee_results.xml');
?>
谢谢
答案 0 :(得分:1)
确保getxml.php存在。选项通常意味着您有轻微的拼写错误。
答案 1 :(得分:1)
将datatype
更改为dataType
并查看是否可以解决您的问题。其余代码看起来正确。
编辑:另外,我不是PHP专业版,但我写了一个使用类似方法的地图应用程序。要返回xml,我使用了:
header("Status: 200");
header("Content-type: text/xml");
echo file_get_contents($q,0); /*$q is the query/filename*/
exit();
我记得在某处需要header("Status: 200");
。
编辑:这是我如何做同样的事情。我希望这会有所帮助。
/* call ajax method to retrieve earthquakes */
$.ajax({
type: "GET",
url: "../getxml.php?q=" + xmlLocation,
dataType: "xml",
success: function(xml){
$(xml).find('entry').each(function(){
/* Retrieve all needed values from XML */
var title = $(this).find('title').text();
var summary = $(this).find('summary').text();
var coord = $(this).find('georss\\:point').eq(0).text();
if(!coord){var coord = $(this).find('point').text();};
var points = coord.split(' ');
var latitude = parseFloat(points[0]);
var longitude = parseFloat(points[1]);
var htmlString = "<div class=\"infowindow\"><b>" +
title + "</b>" + "<p>" + summary + "<br></div>";
var myLatlng = new google.maps.LatLng(latitude,longitude);
var marker = new google.maps.Marker(
{
position: myLatlng,
map: map,
title: title
});
markers[markers.length] = marker;
addInfoWindow(marker, map, htmlString);
$('#output').text("Showing " + markers.length + " earthquakes");
});/* end each */
}
}); /* end $.ajax */
php文件与我上面发布的完全相同,但“安全性”仅响应ajax请求。