8
votes

Passer plusieurs objets JSON en tant que données utilisant JQuery's $ .ajax ()

Je pose des données sur un contrôleur MVC et je tente de maintenir l'état aussi pour une concurrence optimiste. Je pose actuellement une demande JSON, mais je serais ouvert aux alternatives fonctionnelles?

Je pose déjà une collection Nom / Valeur avec la commande suivante: p>

$.ajax({
    url: g_appPath + "/Rounding.aspx/Round/" + $("#OfferId").val(),
    type: 'POST',
    dataType: 'html',
    data: "RoundingData=" + $.toJSON(data) + "&StateData=" + $.toJSON(stateData),
    // --removed! contentType: 'application/json; charset=utf-8',
    beforeSend: doSubmitBeforeSend,
    complete: doSubmitComplete,
    success: doSubmitSuccess
});


2 commentaires

Merci pour vos commentaires! J'apprécie vraiment l'effort que vous êtes entré pour m'aider à résoudre ce problème. L'un de mes objectifs était d'éviter d'avoir les données dans une matrice d'enveloppe, ce qui, à mon avis, est peut-être le seul cas, vous pouvez le faire avec un type de contenu d'application / JSON; Charset = UTF-8 '. J'ai élaboré une solution à ce que je posterai comme un addendum à ma question.


Just Fyi: Données: "RoundingData =" + $ .Tojson (Data) + "& stitata =" + $ .Tojson (stitata) et {RoundingData: $. Tojson (données), stitateata : $ .tojson (stitata) sont interprétés de la même manière par JQuery. En fait, votre chaîne de requête sera effectivement convertie à l'objet dans le grand schéma des choses pour le XHR actuel. En faisant un appel d'accès et ajoutant la chaîne de requête à l'URL actuelle, vous pouvez éviter ce problème, mais je ne vois pas pourquoi cela importerait (je suis sûr que vous avez une bonne raison). Et, évidemment, n'obtiendrez pas de manière sémantique HTTP de toute façon. / rant.


5 Réponses :


16
votes

Autant que je sache, il n'existe aucun moyen de renvoyer deux objets JSON complètement différents qui ne sont pas des enfants d'un seul objet JSON parent et que JQuery décode pour vous à l'aide du .ajax () méthode. Je suppose, je suppose, répondez avec deux objets JSON en tant que chaînes, puis utilisez une bibliothèque JSON externe pour évaluer les chaînes dans un objet JavaScript.

Est-ce que cela répond à votre question?

Ooops: Vous demandez de poster deux objets JSON distincts à votre contrôleur de JQuery ..., non? Mon mauvais ... Ouais, tu peux faire ça ... changez simplement cette ligne: xxx

à: xxx

Désolé pour le mélange.


0 commentaires

1
votes

Si je vous comprends correctement, vous souhaitez parler fonctionnel, vous souhaitez envoyer

var data = {};
data[0] = data1;
data[1] = data2;


0 commentaires

0
votes

Je pense que vous pouvez faire quelque chose comme ceci: xxx


0 commentaires

1
votes

Vous pouvez le faire de manière simple dans ASP.NET, si vous voulez simplement envoyer plusieurs données à Webmethod xxx


0 commentaires

0
votes

C'est une réponse après une période très longue, mais peut vous être utile pour toute référence future.

Je vous suggère de lire Cette réponse de Stackoverflow répond qui répond directement à votre problème.


0 commentaires