Php 正在为$.ajax发出选项请求
我有以下代码,目前我正在本地机器上运行。我正在调用一个名为getxml.php的php脚本,它应该发送一个xml文件的内容作为响应 但是,在Firebug中,我看到的不是GET请求,而是一个选项请求,如 选项getxml.php。我认为我没有提出跨域Ajax请求,但仍然面临这个问题。有办法解决这个问题吗Php 正在为$.ajax发出选项请求,php,jquery,xml,ajax,Php,Jquery,Xml,Ajax,我有以下代码,目前我正在本地机器上运行。我正在调用一个名为getxml.php的php脚本,它应该发送一个xml文件的内容作为响应 但是,在Firebug中,我看到的不是GET请求,而是一个选项请求,如 选项getxml.php。我认为我没有提出跨域Ajax请求,但仍然面临这个问题。有办法解决这个问题吗 var employee_list = new Object; $(function(){ $.ajax({ type:"GET
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 $(
var employee\u list=新对象;
$(函数(){
$.ajax({
键入:“获取”,
url:“http://localhost/projectname/getxml.php",
数据类型:“xml”,
成功:函数(xml){
$(xml).find('employee').each(function(){
var name_text=$(this).find('name').text();
var url_text=$(this.find('url').text();
员工列表[姓名\文本]=url \文本;
$(“”).html(name_text+”(“+url_text+”)).appendTo(“#update target ol”);
});
}//关闭函数
});//关闭$.ajax
}); //结束$(
getxml.php
<?php
//Send the xml file as response
header('Content-type: text/xml');
readfile('employee_results.xml');
?>
谢谢您确保getxml.php存在。选项通常意味着您有一点拼写错误。将
数据类型
更改为数据类型
,看看这是否解决了您的问题。其余代码看起来不错
编辑:另外,我不是PHP专业人士,但我编写了一个使用类似方法的地图应用程序。要返回xml,我使用:
header("Status: 200");
header("Content-type: text/xml");
echo file_get_contents($q,0); /*$q is the query/filename*/
exit();
我记得在某个地方读到,需要标题(“状态: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 */
/*调用ajax方法检索地震*/
$.ajax({
键入:“获取”,
url:“../getxml.php?q=“+xmlLocation,
数据类型:“xml”,
成功:函数(xml){
$(xml).find('entry').each(function(){
/*从XML检索所有需要的值*/
var title=$(this.find('title').text();
var summary=$(this.find('summary').text();
var coord=$(this.find('georss\\:point').eq(0.text();
如果(!coord){var coord=$(this).find('point').text();};
var points=坐标分割(“”);
var latitude=parseFloat(点[0]);
var经度=parseFloat(点[1]);
var htmlString=”“+
标题+“+”“+摘要+”
”;
var mylatng=new google.maps.LatLng(纬度、经度);
var marker=new google.maps.marker(
{
职位:myLatlng,
地图:地图,
标题:标题
});
标记器[标记器.长度]=标记器;
AddInfo窗口(标记、映射、htmlString);
$(“#输出”).text(“显示”+markers.length+“地震”);
})/*每个结尾*/
}
});/*end$.ajax*/
php文件与我上面发布的一模一样,但“安全性”仅用于响应ajax请求。php中的xml在哪里?您只需发送一些标题感谢回复streetparade。readfile()函数读取xml文件的内容并发送它。HTTP中确实没有选项请求。即使您设置了
数据类型:“OPTIONS”
,底层XHR对象也不会理解这一点。是什么让您相信HTTP动词是“OPTIONS”?当你直接在浏览器中查看getxml.php url时会发生什么?谢谢你的回复Ramblingwood。我确保getxml.php存在。我的项目文件夹包含一个js子文件夹getxml.php,xml文件本身和一个包含上述javascript的index.html页面。js子文件夹包含jquery库谢谢你的回复Jim。我做了这个我没有改变你的建议,但仍然有同样的问题:(这很奇怪。我将添加一个示例,说明如何从USGS.gov为我制作的地震跟踪器提取地震XML提要: