OPTIONS请求为$ .ajax

时间:2009-12-27 20:14:42

标签: php jquery xml ajax

我有以下代码,目前正在我的本地机器上运行。我正在调用一个名为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');
?>  

谢谢

2 个答案:

答案 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请求。