通过Ajax的方式执行GP服务

前端之家收集整理的这篇文章主要介绍了通过Ajax的方式执行GP服务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

概述:

上一篇文章Arcgis for js之GP实现缓冲区计算)介绍了Arcgis for js实现缓冲区计算,但是很多时候,我们不会用Arcgis的东西却想调用GP来实现对应的功能,怎么做呢,没错,本文将讲述如何通过ajax的方式去执行GP并返回结果。


思路:

按下F12打开谷歌的调试工具,切换到网络,再执行,可以看到GP执行时请求的url,如下:

在浏览器中分别打开1,2,3,可以开到各自的请求结果如下:

1、

{"jobId":"j75ee9938cd9b450fb76eb0f603040fbc","jobStatus":"esriJobSubmitted"}

2、

{"jobId":"j123084f770754cf6b76892d2fa44b80e","jobStatus":"esriJobSucceeded","results":{"output":{"paramUrl":"results/output"}},"inputs":{"input":{"paramUrl":"inputs/input"},"Distance__value_or_field_":{"paramUrl":"inputs/Distance__value_or_field_"}},"messages":[]} 3、

说明:

从2中,可以看到,编号为2的URL执行了三遍,在此,我个人的理解是2的请求有时候返回不了结果,所以一直请求,直到请求成功。

关键代码

[javascript] view plain copy print ?
  1. vargpUrl='http://localhost:6080/arcgis/rest/services/erase/GPServer/erase';

说明:

这个GP服务是计算erase分析的,没有输入,即数据的参数已经定义好了,为两个shp文件,只是将计算的结果作为输出结果输出

?

    $("#calGP").on("click",function(){
  1. $.messager.progress({
  2. text:"计算中,请稍后..."
  3. });
  4. $.ajax({
  5. type:"POST",
  6. cache:false,
  7. url:gpUrl+"/submitJob?f=json",255); background-color:inherit">async:true,255); background-color:inherit">success:function(result){
  8. result=eval("("+result+")");
  9. varjobId=result.jobId;
  10. if(jobId){
  11. submitJob(jobId);
  12. }
  13. else{
  14. $.messager.progress('close');
  15. $.messager.alert("提示","计算失败!");
  16. }
  17. });
  18. });
说明:

url1请求成功后,返回的是一个jobid。

?

    functionsubmitJob(jobId){
  1. $.ajax({
  2. "/jobs/"+jobId+"?f=json",255); font-weight:bold; background-color:inherit">function(result1){
  3. result1=eval("("+result1+")");
  4. if(result1.jobStatus==="esriJobSucceeded"){
  5. showResult(jobId);
  6. submitJob(jobId);
  7. }

请求不成功,在此提交请求,直到请求成功。

3、

?
  1. functionshowResult(jobId){
  2. "/results/erase_shp?f=json&returnType=data",255); font-weight:bold; background-color:inherit">function(result2){
  3. result2=eval("("+result2+"计算完成!");
  4. varfeatures=result2.value.features;
  5. if(features.length>0){
  6. for(vari=0,length=result2.length;i!=length;++i){
  7. varfeature=features[i];
  8. if(feature==undefined){
  9. return;
  10. varpolySymbolRed=newesri.symbol.SimpleFillSymbol();
  11. polySymbolRed.setOutline(newesri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,255); font-weight:bold; background-color:inherit">newdojo.Color([0,0.5]),1));
  12. polySymbolRed.setColor(newdojo.Color([255,0.5]));
  13. varg=newesri.Graphic(newesri.geometry.Polygon(feature.geometry),polySymbolRed,feature.attributes)
  14. map.graphics.add(g);
  15. }
转载自:http://www.jb51.cc/article/p-mzkgcdgn-sk.html
原文链接:https://www.f2er.com/ajax/162706.html

猜你在找的Ajax相关文章