代码之家  ›  专栏  ›  技术社区  ›  Yuval Adam

未触发jQuery AJAX回调

  •  3
  • Yuval Adam  · 技术社区  · 15 年前

    $.ajax({
       url : "proxy.php",
       type : "POST",
       data : xmlData,
       contentType : "application/x-www-form-urlencoded",
       processData : false,
       success : function(data) {
           // success
       },
       error : function(data) {
           // error
       },    
    });
    

    PHP代理正在回答:

    header('Content-type: text/xml');
    echo $someXmlResponse;
    exit();
    

    没有一个回调会被触发,无论是成功还是错误。


    编辑:


    谢谢你们的帮助。你所有的反馈都到位了。然而,没有一个真正解决了这个问题。它看起来像Firefox4B5中的一个bug。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Darin Dimitrov    15 年前

    如果服务器返回无法解析的无效XML,则可能会发生您正在观察的行为。尝试返回保证为有效XML的内容:

    header('Content-Type: text/xml'); // <-- Notice the Content-Type header casing
    echo '<foo/>';
    exit();
    

    contentType application/x-www-form-urlencoded xmlData 假设是XML。通过设置 processData 参数设置为false表示数据应按原样发布,而不是自动转换为 应用程序/x-www-form-urlencoded 但您仍然在请求中指出了这种内容类型,这似乎是矛盾的。

    另外,如果希望从服务器获得XML,可以指定 dataType: 'xml' .

    $.ajax({
        url: 'proxy.php',
        type: 'POST',
        contentType: 'text/xml',
        data: '<request/>',
        processData: false,
        dataType: 'xml',
        success: function(data) {
    
        },
        error: function(data) {
    
        }
    });
    
        2
  •  2
  •   user113716    15 年前

    这可能不是你的问题,但在IE的某些版本中会引起问题 error: 回拨。

    $.ajax({
       url : "proxy.php",
       type : "POST",
       data : xmlData,
       contentType : "application/x-www-form-urlencoded",
       processData : false,
       success : function(data) {
           // success
       },
       error : function(data) {
           // error
       }  // <--- removed trailing comma
    });
    
        3
  •  0
  •   d2burke    15 年前

    尝试:

    $.ajax({
       url : "proxy.php",
       type : "POST",
       dataType : 'xml',
       contentType : "application/x-www-form-urlencoded",
       processData : false,
       success : function(xml) {
           // success
       },
       error : function(xml) {
           // error
       }  
    });