read from data jquery getjson

from - ¿Cómo puedo pasar los encabezados de solicitud con el método getJSON() de jQuery?



json jquery html (3)

Creo que podría establecer los encabezados y seguir usando getJSON () de esta manera:

$.ajaxSetup({ headers : { ''Authorization'' : ''Basic faskd52352rwfsdfs'', ''X-PartnerKey'' : ''3252352-sdgds-sdgd-dsgs-sgs332fs3f'' } }); $.getJSON(''http://localhost:437/service.svc/logins/jeffrey/house/fas6347/devices?format=json'', function(json) { alert("Success"); });

Necesito hacer una solicitud getJSON() , pero ¿cómo paso la autorización y los encabezados personalizados?

Estoy recibiendo problemas de que el encabezado de solicitud toma el nombre, pero NO los valores. La URL se muestra a través de una solicitud manual en fiddler para que se inserte como opciones en lugar de GET / Url.

Aquí hay un ejemplo de lo que estamos tratando de hacer que funciona bien en el violín; ¿Cómo puedo replicar esto con la función AJAX?

GET /Service.svc/logins/gdd53535342/houses/vxcbdfsdg/people/dsgsdggd?format=json HTTP/1.1 User-Agent: Fiddler Authorization: Basic rgbg423535fa23y4436 X-PartnerKey: df3fgeg-g5g6-b55b-f3d2-dsgg353523 Host: 154.34.53.54:2757

Código de JavaScript:

xhr = new XMLHttpRequest(); $(document).ready(function() { $.ajax({ url: ''http://localhost:437/service.svc/logins/jeffrey/house/fas6347/devices?format=json'', type: ''GET'', datatype: ''json'', success: function() { alert("Success"); }, error: function() { alert(''Failed!''); }, beforeSend: setHeader }); }); function setHeader(xhr) { xhr.setRequestHeader(''Authorization'', ''Basic faskd52352rwfsdfs''); xhr.setRequestHeader(''X-PartnerKey'', ''3252352-sdgds-sdgd-dsgs-sgs332fs3f''); }

Encabezados de solicitud normal de Fiddler:

GET /service.svc/logins/jeffrey/house/fas6347/devices?format=json HTTP/1.1 User-Agent: Fiddler Authorization: Basic faskd52352rwfsdfs X-PartnerKey: 3252352-sdgds-sdgd-dsgs-sgs332fs3f Host: localhost:437

Fiddler a través de Ajax() Encabezados de solicitud:

OPTIONS service.svc/logins/jeffrey/house/fas6347/devices?format=json HTTP/1.1 Host: localhost:437 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Proxy-Connection: keep-alive Origin: http://ipv4.fiddler:61975 Access-Control-Request-Method: GET Access-Control-Request-Headers: authorization,x-partnerkey


El $.getJSON() es una abreviatura que no le permite especificar opciones avanzadas como esa. Para hacer eso, necesitas usar el método completo $.ajax() .

Aviso en la documentación en http://api.jquery.com/jQuery.getJSON/ :

Esta es una función abreviada de Ajax, que es equivalente a:

$.ajax({ url: url, dataType: ''json'', data: data, success: callback });

Así que solo use $.ajax() y proporcione todos los parámetros adicionales que necesita.


Estoy de acuerdo con sunetos en que deberás usar la función $ .ajax para pasar los encabezados de solicitud. Para hacerlo, deberá escribir una función para el controlador de eventos beforeSend, que es una de las opciones de $ .ajax (). Aquí hay una muestra rápida de cómo hacerlo:

<html> <head> <script src="http://code.jquery.com/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $.ajax({ url: ''service.svc/Request'', type: ''GET'', dataType: ''json'', success: function() { alert(''hello!''); }, error: function() { alert(''boo!''); }, beforeSend: setHeader }); }); function setHeader(xhr) { xhr.setRequestHeader(''securityCode'', ''Foo''); xhr.setRequestHeader(''passkey'', ''Bar''); } </script> </head> <body> <h1>Some Text</h1> </body> </html>

Si ejecuta el código anterior y observa el tráfico en una herramienta como Fiddler, verá dos encabezados de solicitudes pasados:

  • securityCode con un valor de Foo
  • contraseña con un valor de Bar

La función setHeader también podría estar en línea en las opciones de $ .ajax, pero quería llamarla.

¡Espero que esto ayude!