2011-11-22 27 views
8

Estoy tratando de pasar un objeto JSON a .getJSON pero sigo recibiendo un error de solicitud incorrecta. Esto es lo que estoy tratando:Pasando datos JSON a .getJSON en jQuery?

var data = { 
    "SomeID": "18", 
    "Utc": null, 
    "Flags": "324" 
}; 

$.getJSON("https://somewhere.com/AllGet?callback=?", JSON.stringify(data), function (result) { 
    alert(result); 
}); 

la actualidad para que funcione, tengo que hacer esto, pero no me gusta la forma en que tengo que construir manualmente la cadena de consulta:

$.getJSON("https://somewhere.com/AllGet?SomeID=18&Utc=&Flags=324&callback=?", null, function (result) { 
     alert(result); 
    }); 

Alguien sabe cómo hacer las solicitudes más fáciles con los objetos JSON que se pasan? Agradecería cualquier ayuda o consejo.

+0

try '$ .param (data);' produce '" SomeID = 18 & Utc = null & Flags = 324 "' – UnLoCo

Respuesta

18

acuerdo con el sitio, esto es válido:

$.getJSON("test.js", { name: "John", time: "2pm" }, function(json) { 
    alert("JSON Data: " + json.users[3].name); 
    }); 

a fin de tratar:

var data = { 
    SomeID: "18", 
    Utc: null, 
    Flags: "324" 
}; 

$.getJSON("https://somewhere.com/AllGet?callback=?", data, function (result) { 
    alert(result); 
}); 

edición: http://api.jquery.com/jQuery.getJSON/

1

¿por qué exactamente necesita una devolución de llamada? (Ow wait, jsonp) Intentaré lo siguiente primero:

$.getJSON("https://somewhere.com/AllGet?callback=?", data, function(result) { 
    alert(result); 
}); 

en firebug y ver si devuelve lo que esperas. No estoy seguro de qué es una cadena como los datos, pero solo dar un objeto funciona bien afaik.

3

No utilice JSON.stringfy, simplemente pase los datos tal como están.

$.getJSON("https://somewhere.com/AllGet?callback=?", data, function (result) { 
    alert(result); 
}); 
3

Cuando facilita los datos a una petición GET de jQuery, que espera un objeto , no una cadena JSON, para la construcción de los parámetros de cadena de consulta. Trate de cambiar su código original a esto:

$.getJSON("https://somewhere.com/AllGet?callback=?", data, function (result) { 
    alert(result); 
}); 
0
$.getJSON("https://somewhere.com/AllGet?callback=?", {SomeID:"18",Utc:null,Flags:"324"}, function (result) { 
     alert(result); 
    }); 

O

var data = { 
    "SomeID": "18", 
    "Utc": null, 
    "Flags": "324" 
}; 


$.getJSON("https://somewhere.com/AllGet?callback=?", 
{ 
SomeID:data.SomeID, 
Utc:data.Utc, 
Flags:data.Flags 
}, 
function (result) { 
      alert(result); 
     }); 
1

No es necesario hacer JSON.stringfy, sólo tiene que pasar la JSON objeto, jQuery construirá el parámetro de URL con ese

$.getJSON("https://somewhere.com/AllGet?callback=?", data, function (result) { 
    alert(result); 
}); 
0

Probé que codifica el JSON y funcionó.

No estoy seguro de qué tan eficiente o práctico es, compartiéndolo solo como una solución para la pregunta anterior.

$.getJSON("https://somewhere.com/AllGet?data="+encodeURI(JSON.stringify(data)), function (result) { 
     alert(result); 
});