2010-09-06 11 views
1

Dynamicaly ajouter un formulaire à une page et le soumettre en C#. Fonctionne bien dans IE mais vient de réaliser son ne fonctionne pas en chrome. Je le fais en fonction d'un objet de transaction PayPal que j'ai construit pour une petite application ecomerce. Voici le code.javascript formulaire post soumettre travailler dans IE mais pas Chrome

private void PayPalPostScriptLONG(Page page) 
    { 
     StringBuilder strScript = new StringBuilder(); 
     strScript.Append("<script language='javascript'>"); 
     if (UserID == string.Empty || EventID == string.Empty || TransactionType == string.Empty) 
     { 
      strScript.Append("alert('missing event, user, or transactiontype');"); 
     } 
     else 
     { 
      strScript.AppendFormat("myform=document.createElement('form'); myform.method='post'; myform.target='_top'; myform.action='{0}'; myform.name='frmPP';", Paypal); 
      strScript.AppendFormat("input1=document.createElement('input'); input1.type='hidden'; input1.name='cmd'; input1.value='{0}'; myform.appendChild(input1);", Cmd); 
      strScript.AppendFormat("input2=document.createElement('input'); input2.type='hidden'; input2.name='business'; input2.value='{0}'; myform.appendChild(input2);", Business); 
      strScript.AppendFormat("input3=document.createElement('input'); input3.type='hidden'; input3.name='item_name'; input3.value='{0}'; myform.appendChild(input3);", Item_name); 
      strScript.AppendFormat("input4=document.createElement('input'); input4.type='hidden'; input4.name='amount'; input4.value='{0}'; myform.appendChild(input4);", Amount); 
      strScript.AppendFormat("input5=document.createElement('input'); input5.type='hidden'; input5.name='return'; input5.value='{0}'; myform.appendChild(input5);", ReturnURL); 
      strScript.AppendFormat("input6=document.createElement('input'); input6.type='hidden'; input6.name='custom'; input6.value='{0}'; myform.appendChild(input6);", Custom); 
      strScript.AppendFormat("input7=document.createElement('input'); input7.type='hidden'; input7.name='on0'; input7.value='uID'; myform.appendChild(input7);"); 
      strScript.AppendFormat("input8=document.createElement('input'); input8.type='hidden'; input8.name='os0'; input8.value='{0}'; myform.appendChild(input8);", UserID); 
      strScript.AppendFormat("input9=document.createElement('input'); input9.type='hidden'; input9.name='on1'; input9.value='eID'; myform.appendChild(input9);"); 
      strScript.AppendFormat("input10=document.createElement('input'); input10.type='hidden'; input10.name='os1'; input10.value='{0}'; myform.appendChild(input10);", EventID); 
      strScript.AppendFormat("input11=document.createElement('input'); input11.type='hidden'; input11.name='on2'; input11.value='type'; myform.appendChild(input11);"); 
      strScript.AppendFormat("input12=document.createElement('input'); input12.type='hidden'; input12.name='os2'; input12.value='{0}'; myform.appendChild(input12);", TransactionType); 
      strScript.AppendFormat("input13=document.createElement('input'); input13.type='hidden'; input13.name='address1'; input13.value='{0}'; myform.appendChild(input13);", Address1); 
      strScript.AppendFormat("input14=document.createElement('input'); input14.type='hidden'; input14.name='address2'; input14.value='{0}'; myform.appendChild(input14);", Address2); 
      strScript.AppendFormat("input15=document.createElement('input'); input15.type='hidden'; input15.name='city'; input15.value='{0}'; myform.appendChild(input15);", City); 
      strScript.AppendFormat("input16=document.createElement('input'); input16.type='hidden'; input16.name='email'; input16.value='{0}'; myform.appendChild(input16);", Email); 
      strScript.AppendFormat("input17=document.createElement('input'); input17.type='hidden'; input17.name='first_name'; input17.value='{0}'; myform.appendChild(input17);", First_name); 
      strScript.AppendFormat("input18=document.createElement('input'); input18.type='hidden'; input18.name='last_name'; input18.value='{0}'; myform.appendChild(input18);", Last_name); 
      strScript.AppendFormat("input19=document.createElement('input'); input19.type='hidden'; input19.name='state'; input19.value='{0}'; myform.appendChild(input19);", State); 
      strScript.AppendFormat("input20=document.createElement('input'); input20.type='hidden'; input20.name='zip'; input20.value='{0}'; myform.appendChild(input20);", Zip); 
      strScript.AppendFormat("input21=document.createElement('input'); input21.type='hidden'; input21.name='night_ phone_a'; input21.value='{0}'; myform.appendChild(input21);", PhonePart1); 
      strScript.AppendFormat("input22=document.createElement('input'); input22.type='hidden'; input22.name='night_ phone_b'; input22.value='{0}'; myform.appendChild(input22);", PhonePart2); 
      strScript.AppendFormat("input23=document.createElement('input'); input23.type='hidden'; input23.name='night_ phone_c'; input23.value='{0}'; myform.appendChild(input23);", PhonePart3); 


      strScript.Append("document.appendChild(myform);"); 
      strScript.Append("myform.submit();"); 
     } 
     strScript.Append("</script>"); 
     page.ClientScript.RegisterClientScriptBlock(typeof(Page), "PPSubmit", strScript.ToString()); 
    } 

Toute aide serait grandement appréciée !!

Merci!


i a fini par prendre jumpdarts conseils et en utilisant le code suivant:

private string GetForm() 
    {    
     StringBuilder ppForm = new StringBuilder(); 
     ppForm.AppendFormat("<Form name=\"frmPP\" id=\"frmPP\" action=\"{0}\" method=\"post\" target=\"_top\" \">", Paypal); 
     AddInput(ppForm,"cmd",Cmd); 
     AddInput(ppForm,"business",Business); 
     AddInput(ppForm,"item_name",Item_name); 
     AddInput(ppForm,"amount",Amount); 
     AddInput(ppForm,"return",ReturnURL); 
     AddInput(ppForm,"custom",Custom); 
     AddInput(ppForm,"on0",UserID); 
     AddInput(ppForm,"os0","uID"); 
     AddInput(ppForm,"on1",EventID); 
     AddInput(ppForm,"os1","eID"); 
     AddInput(ppForm,"on2",TransactionType); 
     AddInput(ppForm,"os2","type"); 
     AddInput(ppForm,"address1",Address1); 
     AddInput(ppForm,"address2",Address2); 
     AddInput(ppForm,"city",City); 
     AddInput(ppForm,"email",Email); 
     AddInput(ppForm,"first_name",First_name); 
     AddInput(ppForm,"last_name",Last_name); 
     AddInput(ppForm,"state",State); 
     AddInput(ppForm,"zip",Zip); 
     AddInput(ppForm,"night_ phone_a",PhonePart1); 
     AddInput(ppForm,"night_ phone_b",PhonePart2); 
     AddInput(ppForm,"night_ phone_c",PhonePart3); 

     return ppForm.ToString(); 
    } 

    private void AddInput(StringBuilder ppForm, string name, string value) 
    { 
     ppForm.AppendFormat("<input type=\"hidden\" name=\"{0}\" value=\"{1}\">", name, value); 
    } 

    private void PayPalPostScriptLONG(Page page) 
    { 

     HttpContext.Current.Response.Write(GetForm());//add form to page 

     StringBuilder strScript = new StringBuilder(); 
     strScript.Append("<script language='javascript'>"); 
     if (UserID == string.Empty || EventID == string.Empty || TransactionType == string.Empty) 
     { 
      strScript.Append("alert('missing event, user, or transactiontype');"); 
     } 
     strScript.Append("var ctlForm = document.getElementById('frmPP');"); 
     strScript.Append("ctlForm.submit();"); 
     strScript.Append("</script>"); 
     page.ClientScript.RegisterClientScriptBlock(typeof(Page), "PPSubmit", strScript.ToString()); 

    } 

Répondre

1

Ne le faites pas de cette façon. Ecrivez votre formulaire en texte html à votre réponse, puis ajoutez une fonction jscript qui le trouve et le soumet.

comme ceci:

Response.Write(<Form...); 
StringBuilder strScript = new StringBuilder(); 
strScript.Append("<script language='javascript'>"); 
strScript.Append("var daForm = document.getElementById('frmPP');"); 
strScript.Append("daForm.submit();"); 
strScript.Append("</script>"); 
ClientScript.RegisterClientScriptBlock(typeof(Page), "PPSubmit", strScript.ToString()); 
+0

ouais j'ai fini par le faire et cela a fonctionné – spaghetticowboy

0

Utilisez <script type="text/javascript"> !!

+0

ne fonctionne pas !! Je pense que le problème était moi essayant d'ajouter le contrôle de forme. J'ajoutais ce JS à partir d'une page aspx dans un iframe et différents navigateurs avaient des crises. Au lieu de cela, j'ai fait comme jumpdart a déclaré et a écrit le formulaire en html dans la réponse et utilisé le js pour trouver et soumettre ... Merci tho ... j'ai ajouté le type =) – spaghetticowboy