jQuery.ajax возвращает 400 неверных запросов - PullRequest
15 голосов
/ 11 ноября 2010

Работает нормально:

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 с использованием .ajax для поддержки обработки ошибок).

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}

Ответы [ 4 ]

18 голосов
/ 11 ноября 2010

Я думаю, вам просто нужно добавить еще 2 опции (contentType и dataType):

$('#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
            }
        });
}
11 голосов
/ 11 ноября 2010

Добавьте это к вашему вызову ajax:

contentType: "application/json; charset=utf-8",
dataType: "json"
7 голосов
/ 03 сентября 2013

Поздний ответ, но я решил, что стоит сохранить это в курсе. Расширение ответа Андреа Турри для отражения обновленных методов 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
    });
});
0 голосов
/ 04 сентября 2018

Убедитесь, что вы используете 'get' или 'post' последовательно, например, со своим вызовом $ .ajax.

$.ajax({
    type: 'get',

должно быть встречено с

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

=============== а за пост

$.ajax({
    type: 'post',

должен быть встречен с

app.post('/', function(req, res) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...