2010-11-11 184 views
13

这工作得很好:jQuery.ajax返回400错误请求

jQuery('#my_get_related_keywords').click(function() { 
    if (jQuery('#my_keyword').val() == '') return false; 
     jQuery.getJSON("http://boss.yahooapis.com/ysearch/web/v1/" 
     +jQuery('#my_keyword').val()+"?" 
     +"appid=myAppID" 
     +"&lang=en" 
     +"&format=json" 
     +"&count=50" 
     +"&view=keyterms" 
     +"&callback=?", 
     function (data) {//do something} 

这将返回400错误请求(只是上面jQuery的使用阿贾克斯,支持错误处理再形成)。

jQuery('#my_get_related_keywords').click(function() 
    { 
    if (jQuery('#my_keyword').val() == '') return false; 
    jQuery('#my_loader').show(); 
    jQuery.ajax(
     { 
     url: "http://boss.yahooapis.com/ysearch/web/v1/" 
     +jQuery('#my_keyword').val()+"?" 
     +"appid=myAppID" 
     +"&lang=en" 
     +"&format=json" 
     +"&count=50" 
     +"&view=keyterms" 
     +"&callback=?", 
     success: function(data) 
      {//do something} 
+0

您是否需要在某处添加方法(post或get)? – Jan 2010-11-11 17:02:23

回答

15

我想你只需要添加2个选项(contentTypedataType):

$('#my_get_related_keywords').click(function() { 

    $.ajax({ 
      type: "POST", 
      url: "HERE PUT THE PATH OF YOUR SERVICE OR PAGE", 
      data: '{"HERE YOU CAN PUT DATA TO PASS AT THE SERVICE"}', 
      contentType: "application/json; charset=utf-8", // this 
      dataType: "json", // and this 
      success: function (msg) { 
       //do something 
      }, 
      error: function (errormessage) { 
       //do something else 
      } 
     }); 
} 
+0

感谢您的快速帮助托罗。 @light也是正确的。 – 2010-11-11 17:30:17

11

添加到您的Ajax调用:

contentType: "application/json; charset=utf-8", 
dataType: "json" 
+0

谢谢。就是这样。 @Toro只是打你:) – 2010-11-11 17:30:58

6

晚的答案,但我想通值得保持这个更新。扩展Andrea Turri的答案以反映更新的jQuery API和.success/.error弃用的方法。

从jQuery 1.8。*开始,这样做的首选方法是使用.done()和.fail()。 Jquery Docs

例如

$('#my_get_related_keywords').click(function() { 

    var ajaxRequest = $.ajax({ 
     type: "POST", 
     url: "HERE PUT THE PATH OF YOUR SERVICE OR PAGE", 
     data: '{"HERE YOU CAN PUT DATA TO PASS AT THE SERVICE"}', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json"}); 

    //When the request successfully finished, execute passed in function 
    ajaxRequest.done(function(msg){ 
      //do something 
    }); 

    //When the request failed, execute the passed in function 
    ajaxRequest.fail(function(jqXHR, status){ 
     //do something else 
    }); 
}); 
相关问题