2014-11-27 5 views
0

мне нужно сделать запрос к REST API, который я создаю на основе учебника, и у меня есть эта способность к/регистрации:Ajax - Плохой запрос Restfull апите

URL  /register 
Method POST 
Params name, email, password 

Я пишу этот запрос Ajax:

$(function() { 
    $('#createPin').click(function(e) { 
     e.preventDefault(); 

var reg= { "email":"[email protected]", "name":"Mile","password": "facebook" }  
var urlAjax = "http://www.agroagro.com/test/v1/register"; 

$.ajax({ 
type: "POST", 
url: urlAjax, 
contentType: "application/json", 
data: JSON.stringify(reg), 
    crossDomain:true, 
    success: function(data) { alert("ajax worked"); }, 
error: function(data) {console.log(data); }, 
dataType: 'html', 
beforeSend: function (xhr) { 
      xhr.setRequestHeader("Access-Control-Allow-Origin", "*"); 
     }, 
     headers: { 
      'Access-Control-Allow-Origin': '*' 
     } 
}); 


}); 
}); 

Я также стараюсь просто: data: reg,, но в обоих случаях я получаю:

POST http://agroagro.com/test/v1/register 400 (Bad Request) 

и:

XHR finished loading: POST "http://agroagro.com/test/v1/register".jquery-latest.min.js:4 sendjquery-latest.min.js:4 m.extend.ajaxtest.html:115 (anonymous function)jquery-latest.min.js:3 m.event.dispatchjquery-latest.min.js:3 r.handle 
test.html:122 Object {readyState: 4, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}abort: function (a){var b=a||u;return i&&i.abort(b),x(0,b),this}always: function(){return e.done(arguments).fail(arguments),this}complete: function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this}done: function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this}error: function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this}fail: function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this}getAllResponseHeaders: function(){return 2===t?f:null}getResponseHeader: function (a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b}overrideMimeType: function (a){return t||(k.mimeType=a),this}pipe: function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()}progress: function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this}promise: function (a){return null!=a?m.extend(a,d):d}readyState: 4responseText: "{"error":true,"message":"Required field(s) name, email, password is missing or empty"}"setRequestHeader: function (a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this}state: function(){return c}status: 400statusCode: function (a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this}statusText: "Bad Request"success: function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this}then: function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()}__proto__: Object 

Зачем в чем проблема ... также /register Не нужно автоинвестирование. Как правильно добавить запрос ajax? Я стараюсь сделать запрос с Chrome Advanced REST client extension и все в порядке.

С Chrome Advanced REST клиент: http://i.imgur.com/Ms0oBK9.png - все работают FINE. Что плохого в моем запросе ajax?

Update: Я стараюсь также:

data: JSON.stringify({ 
        name: "Mile2", 
        email: "[email protected]", 
        password: "facebook" 
       }), 

dataType: 'text', 

но опять BAD запрос

+0

Я попробую также: contentType: "application/x-www-form-urlencoded", но не работает снова ... ПОЖАЛУЙСТА, ПОМОГИТЕ, если работа с расширением Chrome я не вижу причины не работать с ajax-запросом – LaraBeginer

ответ

0

Пожалуйста, убедитесь, что сервер поддерживает кросс связь домена для метода POST. CORS Documentation

+0

Да, поддержка ... Проблема была contentType: «application/json», после того, как я перешел на application/x-www-form-urlencoded, все работает нормально ... Теперь у меня новая проблема, этот код работает в перекрестном домене, когда я использую Chrome Advanced Rest Client, но не работает, когда я делаю запрос ajax из другого домена ... Что может быть проблемой? – LaraBeginer

+0

Клиент Rest Rest не использует ajax для связи, но ваш код делает. Это означает, что ваш сервер не разрешает перекрестное доменное соединение для метода POST. – kamoor

+0

ТАК, какой клиент для клиента используется для общения? – LaraBeginer

Смежные вопросы