与从同步ajax调用返回值混淆
Confusion with returning values from a synchronous ajax call
我在从同步ajax调用返回值时遇到一些问题。我想要返回的值是我为服务器响应创建的类。
这是AJAX代码:
function webRequest(file, data) {
return $.ajax({
url: "http://xxx.xx.xx.xxxx/xxxxx/"+file,
type: "POST",
data: data,
asynch: false,
error: function(jqXHR, textStatus, errorThrown){
return new ServerResponse(false, errorThrown);
},
success: function(data, textStatus, jqXHR){
return new ServerResponse(true, data);
},
timeout: 7500
});
}
这里是ServerResponse.js
var success = false;
var text = null;
var ServerResponse = function(success, text) {
this.success = success;
this.text = text || null;
};
ServerResponse.prototype.isSuccessful = function() {
return this.success;
};
ServerResponse.prototype.getData = function() {
return this.text;
};
返回的webRequest(..)
值如下:
Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}abort: function ( statusText ) {always: function () {complete: function () {done: function () {error: function () {fail: function () {getAllResponseHeaders: function () {getResponseHeader: function ( key ) {overrideMimeType: function ( type ) {pipe: function ( /* fnDone, fnFail, fnProgress */ ) {progress: function () {promise: function ( obj ) {readyState: 0responseText: ""setRequestHeader: function ( name, value ) {state: function () {status: 0statusCode: function ( map ) {statusText: "error"success: function () {then: function ( /* fnDone, fnFail, fnProgress */ ) {__proto__: Object VM2324 controllers.js:48
如何返回从ajax调用中创建的ServerResponse
实例?
@fuyushimoya的答案差不多了,只需返回新实例化的服务器响应对象来自包装器函数。
function webRequest(file, data) {
var serverResponse;
$.ajax({
url: "http://xxx.xx.xx.xxxx/xxxxx/"+file,
type: "POST",
data: data,
async: false,
error: function(jqXHR, textStatus, errorThrown){
serverResponse = new ServerResponse(false, errorThrown);
},
success: function(data, textStatus, jqXHR){
serverResponse = new ServerResponse(true, data);
},
timeout: 7500
});
return serverResponse;
}
这样你就可以进行
var sr = webRequest('some/file', someData);
相关文章:
- 如何记录调用另一个函数的函数的返回值
- 单击按钮时,使用Javascript调用并返回值
- 从JSP页面调用Java Script函数未返回值
- jQuery 延迟的 AJAX 调用返回值
- 未使用返回值时调用方法
- 如何在循环中调用Promise函数并保存其返回值
- AngularJS如何从异步调用返回值
- angularjs从html调用函数返回值
- jQuery deferred:用于延迟函数的返回,直到函数内的异步调用完成+获取返回值
- PHP调用脚本函数,返回值为Uncaught SyntaxError:意外的令牌ILLEGAL
- 如何使用Ajax内部调用JQuery在函数中获取返回值
- 为什么当我调用具有返回值的函数时,我的 onclick 事件不起作用
- 从函数从 JavaScript 调用 servlet 的 Ajax 不返回值
- 带有 AJAX 调用的 Javascript 函数 - 在响应后返回值
- 将一个函数作为参数传递给另一个函数,每次调用函数时检查返回值
- 从 PHP 获取 AJAX 调用的返回值
- 如何在 c# 代码隐藏中调用具有返回值的 Javascript 函数
- Javascript 函数返回 value.根据第一个函数返回值调用另一个函数
- 基于JSF中动作控制器方法的返回值调用javascript
- 基于控制器返回值调用javascript方法