ajax.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. var NET_ERR = "RES_ERR";
  2. var NET_SUCCESS = "RES_OK";
  3. var NET_NO = "RES_NO"; //未查询到数据
  4. /* 测试版虚拟目录 */
  5. var publishURL = 'LyLSQInterface_war_exploded';
  6. publishURL = 'LyLSQInterface';
  7. /**
  8. * 执行网络请求
  9. * @param {Object} data 提交的JSON数据 JSON格式
  10. * @param {Object} ashxName 服务器对应的ashx名称
  11. * @param {Object} waitMsg 等待期间显示的消息内容
  12. * @param {Object} successCallback 获取成功回调
  13. * @param {Object} errorCallback 获取失败回调
  14. * @param {Object} noDataCallback 未获取任何数据回调
  15. */
  16. function sendAjaxJSON(data, ashxName, waitMsg, successCallback, errorCallback, noDataCallback) {
  17. getIpAndCom(function(ip, com) {
  18. if (ip == "" || com == "") {
  19. errorCallback("尚未设置IP地址和端口!");
  20. } else {
  21. var url = "http://" + ip + ":" + com + "/lsqservice/phone/" + ashxName + ".ashx";
  22. plus.nativeUI.showWaiting(waitMsg);
  23. mui.ajax(url, {
  24. data: JSON.stringify(data),
  25. dataType: 'json',
  26. type: 'post',
  27. timeout: 10000,
  28. async: true,
  29. success: function(result) {
  30. plus.nativeUI.closeWaiting();
  31. if (result.res == NET_ERR) {
  32. errorCallback(result.data[0].errDes);
  33. } else if (result.res == NET_SUCCESS) {
  34. successCallback(result.data);
  35. } else if (result.res == NET_NO) {
  36. noDataCallback(result.data[0].errDes);
  37. }
  38. },
  39. error: function(xhr, type, errorThrown) {
  40. plus.nativeUI.closeWaiting();
  41. errorCallback(errorThrown);
  42. }
  43. });
  44. }
  45. });
  46. }
  47. /**
  48. * 获取服务器URL地址
  49. * @param {Object} ashxName 服务页名称
  50. * @param {Object} successCallback 成功回调
  51. * @param {Object} errorCallback 失败回调
  52. */
  53. function getServerURL(ashxName, successCallback, errorCallback) {
  54. getIpAndCom(function(ip, com) {
  55. if (ip == "" || com == "") {
  56. errorCallback("尚未设置IP地址和端口!");
  57. } else {
  58. var url = "http://" + ip + ":" + com + "/" + publishURL + "/" + ashxName;
  59. successCallback(url)
  60. }
  61. });
  62. }
  63. /**
  64. * 获取网络图片的服务地址
  65. * @param {Function} callback 成功回调,内容为网络图片的服务地址
  66. */
  67. function getNetImageRootURL(callback) {
  68. getIpAndCom(function(ip, com) {
  69. if (ip == "" || com == "") {
  70. if (callback != undefined) callback("");
  71. } else {
  72. if (callback != undefined) callback("http://" + ip + ":" + com + "/" + publishURL + "/")
  73. }
  74. });
  75. }
  76. /**
  77. * 通过ajax获取信息
  78. * @param {JSON} options 配置项
  79. */
  80. function sendAjax(options) {
  81. /* 统一方式 */
  82. getServerURL(options.url, function(url) {
  83. /* 如果设置了等待消息 则显示 */
  84. if (options.waitMessage) plus.nativeUI.showWaiting(options.waitMessage);
  85. mui.ajax(url, {
  86. data: options.data == undefined ? {} : options.data,
  87. dataType: 'json',
  88. type: options.type == undefined ? "post" : options.type,
  89. timeout: 45000,
  90. async: true,
  91. success: function(resData) {
  92. plus.nativeUI.closeWaiting();
  93. if (resData == null) {
  94. console.log("连接失败...");
  95. return;
  96. }
  97. if (resData.res == 'RES_OK') {
  98. if (options.success) options.success(resData.data);
  99. } else if (resData.res == 'RES_NO') {
  100. if (options.nodata) options.nodata(resData.data[0].msg);
  101. } else {
  102. if (options.error) options.error(resData.data[0].msg);
  103. }
  104. },
  105. error: function(xhr, type, errorThrown) {
  106. plus.nativeUI.closeWaiting();
  107. /* 打印一下错误信息 */
  108. console.log("AJAX返回错误信息 status = " + xhr.status + " textStatus = " + type);
  109. console.log("错误访问url=" + url);
  110. if (options.error) options.error(analyzingErrorCode(xhr.status));
  111. }
  112. });
  113. }, function(err) {
  114. if (options.error) options.error(err);
  115. });
  116. }
  117. /**
  118. * 分析错误代码
  119. * @param {String} code 错误代码
  120. */
  121. function analyzingErrorCode(code) {
  122. var res = "未知错误!";
  123. switch (code) {
  124. case 0:
  125. res = "服务连接异常!";
  126. break;
  127. case 203:
  128. res = "非权威性信息!";
  129. break;
  130. case 401:
  131. res = "访问被拒绝!";
  132. break;
  133. case 401.1:
  134. res = "登录失败!";
  135. break;
  136. default:
  137. res = "其他错误!" + code;
  138. break;
  139. }
  140. return res;
  141. }