2010-04-01 5 views
7

Ich würde gerne wissen, ob JSON mit AJAX eine Beschränkung auf die Menge der Daten hat, die ein ausgehender und wiederkehrender Parameter tragen kann?JSON-Beschränkung?

Ich möchte in der Lage sein, eine Datei mit 10.000 Zeilen als eine Zeichenfolge vom Server zu senden und zurückzugeben. Wie soll ich diese Aufgabe erreichen? Wird ein einzelner Parameter das aushändigen können?

EDIT: Mein Client ist JavaScript und mein Server PHP.

Vielen Dank.

Antwort

1

sollten Sie die Zeichenfolge in Bits brechen und tun Anfragen mehrere Ajax bis String abgeschlossen ist. Hängen Sie die String-Bits vorübergehend an eine Datei an und speichern Sie die Dateiinhalte nach Abschluss der Anforderungen in Ihrer Datenbank.

+0

Klang, als ob Sie so etwas schon einmal gemacht haben, können Sie die Größe jeder Anfrage empfehlen? Meine Dateien sind 10.000 Zeilen lang und jede Zeile enthält ~ 150 Zeichen. (Ich benutze Javascript und PHP) – thedp

+0

Für mich halte ich es immer unter 1 MB pro Anfrage. – resopollution

+0

1 MB? Auch für das Senden einer Anfrage mit einem Parameter von 1mb? – thedp

3

HTTP POST-Anfragen haben keine (angemessenen) Größenbeschränkungen.

Wenn Sie jedoch mehr als 100 MB Daten veröffentlichen, ist es unwahrscheinlich, dass sie zuverlässig funktionieren.

4

Similar question

JSON ist ähnlich wie andere Datenformate wie XML - wenn Sie mehr Daten übertragen müssen, können Sie einfach mehr Daten senden. Es gibt keine inhärente Größenbeschränkung für die gesamte JSON-Anforderung. Jede Einschränkung würde von dem Server vorgenommen, der die JSON-Anforderung analysiert. (Zum Beispiel hat die ASP.NET „MaxJsonLength“ Eigenschaft des Serialisierers.)

5

JSON nicht inhärent eine Grenze in Bezug auf die Menge von Daten, die sie oder einer Begrenzung seiner Rekursionstiefe übertragen können. Dies hängt von Ihrem Anwendungsserver ab.

Wenn Sie JSONSerialization mit C# verwenden, wird das Limit für die Datenmenge ziemlich niedrig festgelegt. Sie können dies überschreiben, indem Sie das folgende Code-Snippet in Ihre Web.config-Datei einfügen.

 

<system.web.extensions> 
     <scripting> 
      <webServices> 
       <jsonSerialization maxJsonLength="2147483644"></jsonSerialization> 
      </webServices> 
     </scripting> 
    </system.web.extensions> 
 

Sie wahrscheinlich nicht wollen, rund 10 000 Zeilen über AJAX zu senden, wenn Sie es vermeiden können (in kleinere Anfragen brechen oder Paging verwenden).