Cibler un iframe avec un message HTML avec jQuery

Si j'utilise jQuery ou JavaScript pour faire une publication, comment puis-je viser un iframe plutôt que la page actuelle?

jQuery.post( url, [data], [callback], [type] ) 

C'est le format de la publication jQuery, il ne semble pas qu'il y ait n'importe où pour spécifier la cible telle qu'elle existe dans la <form> .

Des idées?

  • L'API POST to GitHub v3 utilisant ajax et JavaScript échoue avec un HTTP 404
  • Javascript - changer le style d'une classe
  • Fonction de glisser-déplacer et de sélectionner JavaScript activée
  • Comment utiliser les plugins jQuery et jQuery avec PrimeFaces
  • Classer un tableau par "Levenshtein Distance" avec les meilleures performances en Javascript
  • Empêcher le saut iOS sans désactiver la capacité de défilement
  • Mettez des citations autour d'une chaîne variable en JavaScript
  • Obtenir la liste des thèmes jQuery UI - à partir d'une URL (même origine-politique)
  • 7 Solutions collect form web for “Cibler un iframe avec un message HTML avec jQuery”

    Vous pouvez le faire via un formulaire régulier:

     <form action="targetpage.php" method="post" target="iframename" id="formid"> <input type="hidden" name="foo" value="bar" /> </form> 

    Vous pouvez ensuite utiliser jQuery pour soumettre le formulaire:

     $("#formid").submit(); 

    Peut-être que vous manquez le point d'une requête AJAX – pourquoi tentez-vous de spécifier la "cible" d'une demande asynchrone? Cela n'a aucun sens car le point principal d'AJAX est que la demande du serveur est renvoyée au Javascript, sans rechargement de page ou destinations HTML.

    Si vous souhaitez charger le résultat de la demande sur un iframe, vous pouvez:

     $.post('myurl', function(data) { $('#myframe').html(data); }, 'html'); 

    Voici comment je l'ai fait en javascript avec un simple html:

     var form=$("<form/>").attr({ method: "post", action: "iframe.php", target: "list_frame" }); form.append($("<input/>").attr({name:"field1",value:0})); form.append($("<input/>").attr({name:"field2",value:1})); form.append($("<input/>").attr({name:"field3",value:2})); form.append($("<input/>").attr({name:"field4",value:3})); form.append($("<input/>").attr({name:"field5",value:4})); $("body").append(form); form.submit(); 

    Vous pouvez résoudre le problème sans formulaire autorisé dans un formulaire en créant dynamiquement le formulaire et en l'ajoutant au corps. Donc, vous feriez quelque chose comme ceci:

     $().ready(function() { $('body').append('<form action="url" method="post" target="iframename" id="myspecialform"> <input type="hidden" name="parameter" value="value" /> </form>'); }); 

    Cela crée votre formulaire de mise à jour d'iframe en dehors du formulaire principal qui englobe tout le reste de la page. Ensuite, appelez-le comme Josh l'a recommandé: $('#myspecialform').submit(); .

    Je sais que cette question est ancienne, mais voici comment je l'ai fait sur ASP.Net (C #) en utilisant jQuery.

     //Create the form in a jQuery object $("<form action='/FormPostTo.aspx' method='post' target='nameofframe'></form>") //Get the value from the asp textbox with the ID txtBox1 and POST it as b1 .append($("<input type='hidden' name='b1' />").attr('value',$('#<%= txtBox1.ClientID %>').val())) //Get the value from the asp textbox with the ID txtBox2 and POST it as b2 .append($("<input type='hidden' name='b2' />").attr('value',$('#<%= txtBox2.ClientID %>').val())) //Add the form to the body tag .appendTo('body') //Submit the form which posts the variables into the iframe .submit() //Remove the form from the DOM (so subsequent requests won't keep expanding the DOM) .remove(); 

    Juste une note rapide: j'ai fait les tags de saisie comme ça plutôt que de les concaténer, dans le cas où la valeur de la zone de texte avait une citation ( ' ). Si vous l'avez concatiné, il dérangerait le HTML et il ne serait pas analysé correctement.

    De plus, cela supprime le formulaire du DOM après qu'il ait été utilisé afin que vous ne remplissiez pas le DOM avec des éléments de formulaire si vous publiez plusieurs fois sur iFrame.

    Un léger changement que vous pourriez faire, serait de créer l'élément de formulaire s'il n'existe pas, puis il suffit de le référencer par ID s'il existe déjà et de le réutiliser.

    Voici ce que j'ai fait pour contourner la question d'avoir un formulaire sous une forme sur une page asp.net lorsque je devais soumettre des données vers une page distante via un formulaire idéal en utilisant AJAX / jQuery.

    1. J'ai créé des variables pour capturer le nom, la cible, l'action, la méthode, etc.

    2. J'ai tenu cette information de la forme dans ces variables, puis j'ai changé la forme elle-même en utilisant jQuery pour faire ce dont j'avais besoin.

    3. Ensuite, j'ai posté le formulaire via AJAX (car j'avais besoin d'un formulaire pour publier sur une page séparée de façon dynamique afin que l'autre page GET l'information).

    4. Enfin, j'ai changé le formulaire asp.net de nouveau à la façon dont il était ainsi, le reste de la page pourrait fonctionner correctement.

    Cela semble avoir résolu mon besoin d'une solution similaire.

    Vous manquez le point d'AJAX. Si vous souhaitez poster quelque chose sur un iframe, vous pouvez le faire par un formulaire simple, publié par JavaScript ou par la manière habituelle: un bouton de soumission.

    JavaScript rend le site Web intelligent, beauté et facile à utiliser.