gpt4 book ai didi

javascript - JQuery,在使用 promise 之前删除一行

转载 作者:行者123 更新时间:2023-11-28 01:09:31 24 4
gpt4 key购买 nike

我正在使用一个rest api,出于安全原因,答案有一个前缀,我无法更改此格式。示例:

throw 'allowIllegalResourceCall is false.';
{
"searchResult" : [ {
"name" : "stackoverflow",
"found" : true
} ]
}

我的请求应该返回一个 promise ,但我想删除第一行>抛出'allowIllegalResourceCall is false.';<.我的函数定义为:

var searchAPI = function() {

var errorFunction = function errorFunction(x) {
console.log("searchError:");
console.log(x);
};
var successFunction = function successFunction(x) {
console.log("searchSuccess:");
console.log(x);
};
var parse = function(data) {
var escaped = data.responseText.replace(/^throw [^;]*;/, '');
console.log("parsed:");
console.log(JSON.parse(escaped));
return JSON.parse(escaped);
};

var fn = function() {

var searchFor = $j('#searchfield').val();

console.log("prepare ajay, with: "+searchFor);

var promise = $j.ajax({
url : "/service/rest/stackoverflow/search",
type : "get",
data : {
"query" : searchFor
},
success: function(data, textStatus, xhr) {
console.log('parse');
console.log(data);
return parse(data);
},
// only for debbuging purpose
error: function(data, textStatus, xhr) {
console.log('parse');
console.log(data);
return parse(data);
}
});

promise.done(successFunction);
promise.fail(errorFunction);
// promise.always(alwaysFunction);
}
return fn;

};

对于每个请求都会调用错误,我不知道为什么,http状态是200(这意味着OK)

浏览器日志如下所示:

parse
Object {readyState: 4, setRequestHeader: function, getAllResponseHeaders: function, getResponseHeader: function, overrideMimeType: function…}
parsed:
Object {"searchResult": Array[1]}
searchError:
Object {readyState: 4, setRequestHeader: function, getAllResponseHeaders: function, getResponseHeader: function, overrideMimeType: function…}

请求似乎有效,但是为什么会调用错误函数?以及怎么可能 我修好这个吗?我的失败在哪里?

编辑:我发现以下问题,返回值应解析为 json,此时无效:

parsererror 
SyntaxError {stack: (...), message: "Unexpected token h"}

最佳答案

终于解决了,需要一个dataFilter :

var searchAPI = function() {

var errorFunction = function errorFunction(x) {
console.log("searchError:");
console.log(x);
};
var successFunction = function successFunction(x) {
console.log("searchSuccess:");
console.log(x);
};
var parse = function(data) {
var escaped = data.responseText.replace(/^throw [^;]*;/, '');
return escaped;
};

var fn = function() {

var searchFor = $j('#searchfield').val();

console.log("prepare ajay, with: "+searchFor);

var promise = $j.ajax({
url : "/service/rest/stackoverflow/search",
type : "get",
data : {
"query" : searchFor
},
dataFilter: function (data, type)
{
return parse(data, type);
},
});

promise.done(successFunction);
promise.fail(errorFunction);
// promise.always(alwaysFunction);
}
return fn;

};

关于javascript - JQuery,在使用 promise 之前删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24648664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com