Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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
处理返回到.ajax错误函数的原始JavaScript,尽管没有问题_Javascript_Jquery_Post - Fatal编程技术网

处理返回到.ajax错误函数的原始JavaScript,尽管没有问题

处理返回到.ajax错误函数的原始JavaScript,尽管没有问题,javascript,jquery,post,Javascript,Jquery,Post,我正在对一个我无法控制的产品进行以下jQuery.ajax()调用: $.ajax({ type: "POST", url: "/WfWsR", data: { method: 'getInfo', nodeID: nodeID }, dataType: "text", success: function(data, response, replyxhr){ return data; }, error

我正在对一个我无法控制的产品进行以下jQuery.ajax()调用:

$.ajax({
    type: "POST",
    url: "/WfWsR",
    data: { method: 'getInfo',
        nodeID: nodeID
    },
    dataType: "text",
    success: function(data, response, replyxhr){
        return data;
    },
    error: function(replyxhr, response){
        console.log(response);
        console.log(replyxhr);
        return response;
    }
});
POST以200 OK成功,但它没有转到success函数,而是以错误告终,响应变量设置为“error”,replyxhr变量设置为Object{readyState=0,status=0,statusText=“error”}

通过“邮递员”手动尝试邮件会产生以下结果:

new Array(
  new Array(
    new Array(
      "15", "1", ""
    )
  ), 
  new Array(
    new Array(
      "1", "3757", "3757", "user", "2013-01-22 15:09:04.354"
    )
  ), 
  new Array(
  ), 
  new Array(
    "3762", "ABCD", "test Purge Documents", "50", "purge Documents", "Administrator", "2013-01-22 15:07:57.065"
  ), "13d886ddf90"
)
这是大量的JavaScript;从技术上讲,我只需要这些阵列中的一个。我认为它在jQuery中不起作用的原因是,这种返回可能是无效的,特别是考虑到数据类型:“text”。但我也不能使用数据类型:“脚本”;它使用隐式GET而不是POST,并且所讨论的URL不支持GET


我还缺少其他选项吗?

我猜您是在告诉Ajax期待
文本,但根据响应的
内容类型
,它得到了其他东西。服务器似乎正在向您提供Javascript,因此如果内容类型为
text/Javascript
,我不会感到惊讶

我从来没有处理过这个问题,但如果这是您的问题,文档确实说jQuery 1.5及更高版本中有一个解决方案:

多个空格分隔的值:从jQuery 1.5开始,jQuery可以转换 从内容类型标头中接收到的数据类型到 你需要。例如,如果希望将文本响应视为 XML,使用“文本XML”作为数据类型。您还可以创建一个JSONP 请求,将其作为文本接收,并由jQuery解释为XML: “jsonp文本xml。”类似地,一个速记字符串,如“jsonp xml” 将首先尝试从jsonp转换为xml,如果失败, 从jsonp转换为文本,然后从文本转换为xml

via(数据类型见文档)


这意味着您可以使用:
数据类型:“脚本文本”
将Javascript响应解释为文本。当然,您也可以使用
数据类型:“script”
将其解释为脚本。

最后编写了我自己的xhr调用(sans错误处理)来实现这一点。可怕问题的可怕解决方案。(eval()的两次失败)

var xhReq = new XMLHttpRequest();
var params = "method=getInfo&nodeID=" + nodeID;

xhReq.open("POST", "/WfWsR", true);
xhReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

xhReq.onreadystatechange = onPostSubmit;
xhReq.send(params);
var response = eval(xhReq.response);
var stepIDx = response[0][0][0];

return stepIDx;

function onPostSubmit() {
    if (xhReq.readyState==4 || xhReq.readyState=="complete") { 
        if (xhReq.status != 200) {
            alert('BadStatus');
            return;
        }
    }
}