REST api GET与jQuery,不工作

时间:2014-06-26 00:11:02

标签: javascript jquery api rest

这是我的所有代码

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'}"}

现在,当我检查chrome的网络选项卡中的元素时,我得到“403 forbidden”。我猜我的授权标题是不正确的,但我不太清楚如何做到这一点。任何提示/帮助?

另外,我需要做些什么才能在function()成功中获得响应JSON: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. 

2 个答案:

答案 0 :(得分:0)

你可以在beforeSend中尝试这样的事情:

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

如评论中所述,要访问您的回复,请使用:

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

让我知道这是怎么回事。您可能无法正确获得授权,因此在inf3rno建议的情况下,请仔细阅读api文档以了解您是否正确执行了此操作:)

答案 1 :(得分:0)

所以似乎javascript中存在一个问题,不是用PHP或我尝试过的任何其他语言。如果您访问谷歌浏览器并点击网络,然后点击请求并复制它显示的cURL请求

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&#39; Origin xxx&#39;我删除了那个标签,它工作正常。好像在javascript的cURL请求中,它添加了一个不在PHP中的原始标记