开发者

iframe versus div + jquery

I would like to know what is the more appropriate for what I want to achieve:

On my main page (main.php), I have links to different forms: form1.php, form2.php, form3.php. I need the pages of the links to open in a portion of main.php, i.e in a div or in a iframe on main.php, without refreshing main.php. The form pages enables to populate, delete, update a database. When I do those actions, I don't want main.php to refresh but only the appropriate form page. My first option is to open form1.php for example in a iframe of main.php. When I submit a form, only form1.php in the iframe is refreshed. My second option is to use jquery: open the link (form1.php) in a div of main.php. Submit the form within the div, a开发者_如何转开发nd refresh the div only.

The second option is more demanding since I do not have much experience with ajax and jquery. The first option is more straight forward for me. I am wondering if there is any advantages to use the second option with a div refresh compared to iframe, i.e compatibility with different browsers and else... Thanks.


I'd recommend using jquery, ajax(XMLHttpRequest). Iframes are old, not semantic and you cannot access to an iframe within main.php.

$("#submit_button_id").click(function(e) {
    e.preventDefault();
    $.post('form.php', $("#form_name").serialize(), function(result) { 
        $("#div_id").html(result); } }

this snippet should work.
$("#submit_button_id").click(function(e) { : catches the click function of the assigned id and creates a trigger.

e.preventDefault(); : prevents the form submit regularly, we are going to submit it by jquery.

$.post sends the form in POST method.

'form.php' is your form controller which is going to return an html code to be shown.

("#form_name").serialize() this function is a utility for serializing form to be sent. it loads the input fields and converts them to like { field1: value, field2: value }

function(result) { is the 3rd parameter, on success, $.post calls the 3rd parameter as a function. we create an anonymous function to replace html of our div.

$("#div_id").html(result) sets the assigned div's html to result variable.

refer to http://api.jquery.com/ , they have a wonderful reference sheet.


Try $("#div").load("form.php"); from jQuery

This method is the simplest way to fetch data from the server. It is roughly equivalent to $.get(url, data, success) except that it is a method rather than global function and it has an implicit callback function. When a successful response is detected (i.e. when textStatus is "success" or "notmodified"), .load() sets the HTML contents of the matched element to the returned data.

Reference: .load() | jQuery API Documentation

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜