Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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
Javascript 从GeoServer检索图层名称的AJAX回调失败,并出现断言错误_Javascript_Jquery_Ajax_Openlayers 3_Geoserver - Fatal编程技术网

Javascript 从GeoServer检索图层名称的AJAX回调失败,并出现断言错误

Javascript 从GeoServer检索图层名称的AJAX回调失败,并出现断言错误,javascript,jquery,ajax,openlayers-3,geoserver,Javascript,Jquery,Ajax,Openlayers 3,Geoserver,我正在写一些东西从我的GeoServer获取所有图层的名称。这是我的代码: function getData() { return $.ajax({ url: "http://localhost:8080/geoserver/ows?service=wms&version=1.1.0&request=GetCapabilities", type: 'GET' }); } function onComplete(data) {

我正在写一些东西从我的GeoServer获取所有图层的名称。这是我的代码:

function getData() {
    return $.ajax({
        url: "http://localhost:8080/geoserver/ows?service=wms&version=1.1.0&request=GetCapabilities",
        type: 'GET'
    });
}

function onComplete(data) {

    var parser = new ol.format.WMSCapabilities();
    var result = parser.read(data.responseText);

    var layersArray = result.Capability.Layer.Layer;
    layersNameArray = [];

    for(i=0;i<layersArray.length;i++){
        layersNameArray.push(layersArray[i].Name)
    }

    return layersNameArray
}

getData().done(onComplete)

您可以使用Jquery回调功能

以这种方式调用函数

getData(function(responsefromAjax){
   alert('the response from ajax is :' +responsefromAjax);
  // what ever logic that needs to run using this ajax data
 });
这样做可以改变你的方法

function getData(callback) { // passing the function as parameter
    $.ajax({
        url: "http://localhost:8080/geoserver/ows?service=wms&version=1.1.0&request=GetCapabilities",
        type: 'GET',
        success: function(response) {
            var parser = new ol.format.WMSCapabilities();
            var result = parser.read(response);

            var layersArray = result.Capability.Layer.Layer;
            layersNameArray = [];

            for(i=0;i<layersArray.length;i++){
                layersNameArray.push(layersArray[i].Name)
            }

            callback(layersNameArray); //this will execute your function defined during the function call. As you have passed the function as parameter.
        }
    });
}
function getData(回调){//将函数作为参数传递
$.ajax({
url:“http://localhost:8080/geoserver/ows?service=wms&version=1.1.0&request=GetCapabilities",
键入:“GET”,
成功:功能(响应){
var parser=new ol.format.WMSCapabilities();
var result=parser.read(响应);
var layersArray=结果.Capability.Layer.Layer;
LayerNameArray=[];

对于(i=0;i您可以使用Jquery回调特性

以这种方式调用函数

getData(function(responsefromAjax){
   alert('the response from ajax is :' +responsefromAjax);
  // what ever logic that needs to run using this ajax data
 });
这样做可以改变你的方法

function getData(callback) { // passing the function as parameter
    $.ajax({
        url: "http://localhost:8080/geoserver/ows?service=wms&version=1.1.0&request=GetCapabilities",
        type: 'GET',
        success: function(response) {
            var parser = new ol.format.WMSCapabilities();
            var result = parser.read(response);

            var layersArray = result.Capability.Layer.Layer;
            layersNameArray = [];

            for(i=0;i<layersArray.length;i++){
                layersNameArray.push(layersArray[i].Name)
            }

            callback(layersNameArray); //this will execute your function defined during the function call. As you have passed the function as parameter.
        }
    });
}
function getData(回调){//将函数作为参数传递
$.ajax({
url:“http://localhost:8080/geoserver/ows?service=wms&version=1.1.0&request=GetCapabilities",
键入:“GET”,
成功:功能(响应){
var parser=new ol.format.WMSCapabilities();
var result=parser.read(响应);
var layersArray=结果.Capability.Layer.Layer;
LayerNameArray=[];

对于(i=0;i您没有等待ajax调用完成,服务器返回值。您必须等待!!从ajax的success方法中调用oncomplete函数
运行oncomplete()函数逐行运行,代码运行
这是因为当您到达该行时,服务器会返回结果。您能推荐一个使用我的代码的工作示例吗?起初,我试图在success方法中调用函数,但它不起作用这是您需要调用它的方式,当您尝试调用时,什么不起作用从success method调用?我编辑了主要帖子,它与success method一起工作,但我如何访问生成的变量?您没有等待ajax调用完成,服务器返回值。您必须等待!!从ajax的success method中调用oncomplete函数
运行oncomplete()函数逐行运行,代码运行
这是因为当您到达该行时,服务器会返回结果。您能推荐一个使用我的代码的工作示例吗?起初,我试图在success方法中调用函数,但它不起作用这是您需要调用它的方式,当您尝试调用时,什么不起作用从success方法中删除?我编辑了主帖子,它与success方法一起工作,但如何访问结果变量?它工作,但我不能使用getData()的输出如果我尝试在变量中获取结果,它仍然显示未定义。警报工作正常,因为它在显示之前等待调用完成,但在用户单击按钮后,我需要直接访问结果以放入comboBox字段。ajax是异步调用,其余代码在发出警报后继续执行jax调用。因此,如果您打算在您的某些逻辑中使用ajax返回的数据,则必须在调用成功后才能执行。因此,要么更改代码以在ajax成功中执行您的逻辑,要么您可以在发出警报的位置将逻辑写入
getData
函数中。您不能在线订购比萨饼并立即停止开始吃它。你必须等待它被送到,然后你才能吃。在AJAXIt中也是一样,但我不能使用getData()的输出如果我尝试在变量中获取结果,它仍然显示未定义。警报工作正常,因为它在显示之前等待调用完成,但在用户单击按钮后,我需要直接访问结果以放入comboBox字段。ajax是异步调用,其余代码在发出警报后继续执行jax调用。因此,如果您打算在您的某些逻辑中使用ajax返回的数据,则必须在调用成功后才能执行。因此,要么更改代码以在ajax成功中执行您的逻辑,要么您可以在发出警报的位置将逻辑写入
getData
函数中。您不能在线订购比萨饼并立即停止吃酸的。你必须等它送到,然后才能吃。在阿贾克斯也是一样