2014-06-26 2 views
0

Вот весь мой кодREST API GET с JQuery, не работает

Html:

<form name="test" id="test" method="post"> 
     <input type="submit" name="sub" value="Hit ME" class="page"/> 
</form> 

JQuery:

$.ajax 
    ({ 
    type: "GET", 
    url: "https:// url", 
    dataType: 'json', 
    async: false, 
    headers: {"Authorization": "Bearer xxxx"}, 

    success: function(){ 
    alert('yay!'); 
    } 
}); 

Результат:

{"error": "Shell form does not validate{'html_initial_name': u'initial-js_lib', 'form': <mooshell.forms.ShellForm object at 0x260c6d0>, 'html_name': 'js_lib', 'html_initial_id': u'initial-id_js_lib', 'label': u'Js lib', 'field': <django.forms.models.ModelChoiceField object at 0x260c7d0>, 'help_text': '', 'name': 'js_lib'}{'html_initial_name': u'initial-js_wrap', 'form': <mooshell.forms.ShellForm object at 0x260c6d0>, 'html_name': 'js_wrap', 'html_initial_id': u'initial-id_js_wrap', 'label': u'Js wrap', 'field': <django.forms.fields.TypedChoiceField object at 0x260c190>, 'help_text': '', 'name': 'js_wrap'}"} 

Теперь, когда Я проверяю элемент на вкладке «Сеть» хром, я получаю «403 запрещен». Я предполагаю, что мой заголовок авторизации неверен, но я не совсем уверен, как это сделать. Любые советы/помощь?

Также, что мне нужно сделать, чтобы получить ответ JSON в функции() success: part?

Спасибо!

Кстати, я также попытался это сообщение

beforeSend: function (xhr){ 
     xhr.setRequestHeader('Authorization', "Bearer xxx"); 
    }, 

Ошибка в сети консоли

GET (url) 403 (Forbidden) jquery-1.9.1.js:8526 
XMLHttpRequest cannot load (url). No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://fiddle.jshell.net' is therefore not allowed access. 
+0

Чтобы получить ответ: 'success: function (data) {console.log (data); } ' – Darren

+0

Спасибо! к сожалению, это не решает проблему моего авторизации, которая не работает, и моя просьба запрещена. Есть идеи по этому поводу? – k9b

+0

Да, 403 может означать, что у вас нет разрешения. Попытайтесь прочитать api docs о том, как отправить учетные данные, или связаться с сопровождающим об этом. – inf3rno

ответ

0

Вы могли бы попробовать что-то вроде этого в вашем beforeSend:

beforeSend: function (xhr) { 
    xhr.withCredentials = true; 
    xhr.setRequestHeader("Authorization", "Bearer xxxx"); 
}, 

И как указано в комментарии, получить доступ к вашему ответу, который вы используете:

success: function (data) { 
    console.log(data); 
} 

Сообщите мне, как это. Возможно, вы не получили правильное разрешение, так как inf3rno предложили прочитать прочитанные api docs, чтобы убедиться, что вы делаете это правильно :)

+0

Все еще давая мне 403 запрещено. Я связан с этим токеном и ссылкой на api, прежде чем через php и консоль REST, я дважды проверю – k9b

+0

@ k9b Hrm, что странно. Нет проблем с CORS? – Darren

+0

странно! Когда я ввожу неправильный токен на предъявителя, он дает мне 401 Несанкционированный. Когда я вхожу в правильный, он говорит: «Запрещено». Есть идеи? Я знаю, что этот ресурс доступен, так как я обращаюсь к нему прямо сейчас через консоль REST. – k9b

0

Так что, похоже, в javascript возникла проблема, которая не происходит в php или любой другой язык, с которым я это пробовал. Если вы идете в Google Chrome и нажмите на Сеть, а затем нажмите на запросах и скопировать локонов запрос он показывает, как этот

curl 'url' -H 'Origin: http://fiddle.jshell.net' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Accept-Language: en-US,en;q=0.8' -H 'Authorization: Bearer xxx' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Referer: http://fiddle.jshell.net/_display/' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' --compressed 

По какой-то причине, как вы можете видеть из сообщения об ошибке Google Chrome консоли выше (в в нижней части моего вопроса), код не понравился -H «Origin xxx». Я удалил этот тег, и он работал нормально. Похоже, что в запросе cURL из javascript он добавляет исходный тег, который не существует в PHP