Erreur Ajax ASP.NET: Sys.WebForms.PageRequestManagerParserErrorException [javascript]


Answers

Il y a probablement une erreur survenant lors de la publication. Dans ce cas, vous pouvez afficher les détails de l'erreur en ajoutant un PostBackTrigger à votre panneau de mise à jour et en référençant le bouton qui provoque le problème:

    <asp:updatepanel ID="updatepanel1" runat="server">
        <Triggers>
            <asp:PostBackTrigger ControlID="button1" /> 
        </Triggers>
        <ContentTemplate>

        </ContentTemplate>
    </asp:updatepanel>
Question

Mon site Web m'a donné des erreurs intermittentes en essayant d'effectuer des activités Ajax. Le message que je reçois est

Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.

Details: Error parsing near '

<!DOCTYPE html P'.

Donc, c'est évidemment une sorte de délai d'attente du serveur ou le retour du serveur juste garbage déchiqueté. Ce généralement, malheureusement pas toujours, happe




J'ai résolu ce même problème en supprimant le type de Content-Type: Custom HTTP Headers section En- Custom HTTP Headers dans l'onglet En- HTTP Headers dans IIS . C'était briser l'encodage de la page et en quelque sorte cela a affecté Ajax en général.

Le type de Content-Type que j'avais configuré dans IIS définissait le codage sur ISO-8859-1 .




Problème: Sys.WebForms.PageRequestManagerParserErrorException se produira lors de la redirection de votre page, laissons le bouton cliquer dans UpdatePanel dans aspxAjax.

Solution:

  1. Ajouter un bouton "GoTo" dans votre page aspx où le panneau de mise à jour utilise et ajoutez-le en dehors du panneau de mise à jour

  2. Dans votre code, attribuez votre identifiant utilisateur à la variable de session, par exemple Session["UseridJustregistered"]=Id de DB ou UsernameField

  3. Respose.Redirect("regSucces.aspx?urlid='" + Session["UseridJustregistered"] + "'");

  4. Vérifiez si Session["UseridJustregistered"] est null ou non

C'est la façon ASP OLD Classic qui peut résoudre notre problème, au moment où Microsoft trouve une solution, nous pouvons y remédier de cette façon.




J'ai finalement résolu ma variante de ce même problème. J'essayais de copier / déplacer une valeur sélectionnée entre 2 listes dans un formulaire Web. Dans mon cas, j'ai dû appeler spécifiquement {listbox} .ClearSelection () avant d'effectuer l'action la 2ème fois.

Donc, évidemment, ce message d'erreur / problème peut survenir pour une multitude de raisons.




Dans notre cas, le problème a été causé par un proxy de réécriture sur le chemin. La réécriture a modifié le contenu de la réponse du panneau de mise à jour. Mais cette réponse contient également la taille originale. Le mécanisme de réécriture ne peut pas savoir que quelques octets de la réponse contiennent réellement la taille de la réponse d'origine et il doit également être modifié.

La réponse du panneau de mise à jour commence comme ceci:

1|#||4|30502|updatePanel|pnlUpdate| ...

Le 30502 est la taille d'origine du contenu en cours de mise à jour. Le moteur de réécriture modifie la sortie, mais la taille reste inchangée => erreur d'erreur de l'analyseur.

Je ne vois pas comment surmonter ce problème du côté du client. Nous aurions besoin de savoir exactement comment le contenu a été modifié et ensuite de changer la taille de la réponse avant que UpdatePanel ClientScript commence à le traiter.




J'ai trouvé que mon problème était lié à un caractère nul rendu dans la liaison de données d'un GridView. La longueur attendue de la réponse ne correspond pas à la longueur réelle du texte de la réponse qui a provoqué l'erreur. Une fois que j'ai corrigé les données dans la base de données, je n'ai plus l'erreur. Le correctif final sera d'assainir le texte rendu lors de l'événement RowDataBound.

En parcourant la base de données, je n'ai pas pu voir les mauvaises données puisque SQL Server 2008 n'affiche pas le texte si le caractère nul (Char (0)) est dans la chaîne. Dans l'événement RowDataBound de mon GridView, j'ai ajouté du code pour lancer une exception pour tout texte contenant des caractères spéciaux. C'est ainsi que j'ai trouvé l'enregistrement contenant les caractères nulles.

tl; dr - Vérifie les caractères nuls dans le html rendu.




J'ai eu exactement la même erreur.

Pour moi, c'était

<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Manquant dans la section httpModules de web.config (application .Net 3.5)

Cette erreur semble être liée à beaucoup de choses différentes.