2010-11-11 38 views
13

này hoạt động tốt:jQuery.ajax trả 400 Bad Request

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} 

này trả 400 Bad Request (Chỉ cần một trình bày lại những điều trên jQuery sử dụng ajax để hỗ trợ xử lý lỗi).

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

bạn có phải thêm phương thức (đăng hoặc nhận) ở đâu đó không? – Jan

Trả lời

15

Tôi nghĩ rằng bạn chỉ cần bổ sung thêm 2 lựa chọn (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

Cảm ơn sự giúp đỡ nhanh Toro. @light cũng chính xác. –

11

Thêm này để gọi ajax của bạn:

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

Cảm ơn. Điều đó là vậy đó. @Toro chỉ đánh bại bạn với nó :) –

6

Cuối câu trả lời, nhưng tôi figured nó có giá trị giữ cập nhật này. Mở rộng trên Andrea Turri câu trả lời để phản ánh cập nhật jQuery API và .success/.error phương pháp không được chấp nhận.

Kể từ jQuery 1.8. * Cách ưu tiên để thực hiện việc này là sử dụng .done() và .fail(). Jquery Docs

ví dụ:

$('#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 
    }); 
}); 
Các vấn đề liên quan