Dies ist streng ein IE7 Problem; IE8 macht nichts und FF auch nicht. Unsere Form wirft die folgende Ausnahme bei der Einreichung:JSON-Fehler beim Senden in IE7 (und nur IE7): "Kann nicht deserialisiert werden. Die Daten entsprechen keinem gültigen JSON."
Sys.ArgumentException: Cannot deserialize. The data does not correspond to valid JSON.
Parameter name: data
Formularkopf (für Geheimhaltung bearbeitet, wir eine paranoide NDA haben):
<%using (Ajax.BeginForm("...", "...", FormMethod.Post,
new AjaxOptions {
OnComplete = "OnSaveEditCommunitySuccess",
OnBegin = "OnBegin" },
new { id = "form_Edit...", name = "form_Edit..." }))
ich vorübergehend einen Handler OnBegin angebracht ist, und schaute auf die json Objekt, das herumgereicht wird. Ich kann garantieren, json.get_request().get_body()
ist identisch zu dem, was in FF geschieht, und ordnungsgemäß Web codiert:
ProfileTabModel.IsEdit=true&ProfileTabModel.HandEnterCommunity=true&ProfileTabModel.CommunityId=26&ProfileTabModel.County=&ProfileTabModel.OrgId=7395& (...)
Es könnte von Bedeutung sein, dass dies eine große Form ist, und die gesendeten Daten mindestens 2500 Bytes. Mir ist klar, dass es in einem POSt keine Rolle spielen sollte, und selbst wenn es so wäre, hat es nichts mit dem gemeldeten Fehler zu tun, aber erwähne es am besten, da andere Formulare, die auf demselben Muster geschrieben sind, keine Probleme haben, ihre Daten zu veröffentlichen.
[EDIT:] Wenn auf Debug ausgeführt wird, gibt IE7 die Aktion in dem Controller nicht ein, während alles andere tut. Vergessen, dies zu erwähnen.
Kannst du den eigentlichen JSON posten? – JeremyP
Ich würde es gerne zuerst finden. Ich meine, ich kann durch die HTTP-Anfrage gut graben, und ich kann sehen, dass es nie die Aktionsmethode in den Controller eingibt. Aber ich weiß nicht einmal, worüber JSON es spricht. – Liz
Sie könnten versuchen, alle Json-Aufrufe zu ändern, um zu protokollieren, was sie zu verschlüsseln versuchen, und wenn es erfolgreich ist, fügen Sie eine neue Zeile mit 'succes' – gnur