jQuery.ajax返回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} 

这将返回400 Bad Request(仅使用.ajax重构上述jQuery以支持error handling)。

 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} 

我想你只需要添加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 } }); } 

将此添加到您的ajax调用:

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

迟到的答案,但我认为值得保持更新。 扩展Andrea Turri的答案以反映更新的jQuery API和.success / .error已弃用的方法。

从jQuery 1.8。*开始,首选的方法是使用.done()和.fail()。 Jquery文档

例如

 $('#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 }); }); 

例如,确保使用$ .ajax调用一致地使用’get’或’post’。

 $.ajax({ type: 'get', 

必须得到满足

app.get(’/’,function(req,res){

===============和post

 $.ajax({ type: 'post', 

必须得到满足

 app.post('/', function(req, res) {