Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正在为$.ajax发出选项请求_Php_Jquery_Xml_Ajax - Fatal编程技术网

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

我有以下代码,目前我正在本地机器上运行。我正在调用一个名为getxml.php的php脚本,它应该发送一个xml文件的内容作为响应

但是,在Firebug中,我看到的不是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 $(
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提要: