2016-03-14 6 views
0

Я выкладываю данные по форме на сайте (где я зарегистрирован) следующий мой код:Аякса после вызова в результате 422 ошибки

$.ajax({ 
     url:'https://api.contentstack.io/v2/content_types/the_lazy_goose/entries/', 
     type: "POST", 
     contentType: "application/json", 
     data: JSON.stringify({ 
       title: "John", 
       url: "2pm", 
       multi_line: "Random Text using Post call" 
      }), 
     headers:{ 
        access_token: 'xxxxxxxxxxx', 
        api_key: 'xxxxxxxxx' 
       }, 

     success: function() { 
      alert("success"); 
     }, 
     error: function() { 
       alert("ERROR"); 
      }, 
    }); 

Это приводит к 422 (Unprocessable Entity) , не уверен, где происходит не так. * Я прошел через http://www.restpatterns.org/HTTP_Status_Codes/422_-_Unprocessable_Entity и понять, что «request_entity» & «синтаксис запроса» отлично

Сайт https://contentstackdocs.built.io/rest/api/content-management-api/, кажется, поддерживает данные JSon

+0

Вы уверены, что 'https: // exampleurl.com/goose/entries /' является допустимым URL-адресом, позволяющим использовать POST-глагол? Попробуйте это вместо этого: http://jsonplaceholder.typicode.com/ – urbz

+0

Извините, ссылка, о которой я упоминал, - это случайный текст. Сайт, на который я отправляю, позволяет POST, GET – iyerrama25

+0

Итак, вы уверены, что ваш упомянутый api позволяет использовать 'json' как contentType? Может быть, попробуйте не указывать или просто для экспериментальных целей, что говорит 'application/xml', statuscode ..? – urbz

ответ

0

422 используется в рельсах, когда проверка параметров не удается. Возможно, вам не хватает некоторых необходимых параметров.

Кроме того, я не думаю, что JSON.stringify в данных необходимо.

0

Итак, я просмотрел файл contentstack.js и использовал метод Request (вместо ajax) для данных POST. Схема была неправильной. Итак, вот код, который я использовал в конце:

function Request(options, callback) { 
     HTTPRequest = XMLHttpRequest; 
     var xhr = new HTTPRequest(), 
      method = options.method || "POST", 
      url = options.url, 
      headers = options.headers; 

     // make a request 
     xhr.open(method, url, true); 

     // set headers 
     xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 
     for (var header in headers) { 
      xhr.setRequestHeader(header, headers[header]); 
     } 

     // send stringify data 
     if (options.body && method == "POST" || method == "PUT") { 
      if (typeof options.body === 'object') { 
       console.log("sending in data: options.body"); 
       xhr.send(JSON.stringify(options.body)); 
      } else { 
       xhr.send(options.body); 
      } 
     } else { 
      xhr.send(); 
     } 

     // collect response 
     xhr.onreadystatechange = function() { 
      if (xhr.readyState === 4) { 
       var data = xhr.responseText; 
       try { 
        data = JSON.parse(data); 
       } catch (e) { 
        console.error('Could not parse the response received from the server.'); 
       } 

       if (xhr.status >= 200 && xhr.status < 300) { 
        callback(null, data); 
       } else { 
        callback(data, null); 
       } 
      } 
     }; 
    } 

    var options = { 
      url: 'https://api.contentstack.io/v2/content_types/the_lazy_goose/entries/', 
      method:'POST', 
      headers:{ 
         access_token: 'xxxxxxx', //put auth token here 
         api_key: 'xxxxxxx' 
        }, 
      body: { 
         "entry": { 
         "title": "examplexx1", 
         "url": "/example10xxx1", 
         "multi_line": "multiline...!", 
         "_comment": "example comment" 
         } 
       } 
     }; 
Смежные вопросы