2016-06-01 80 views
0

我希望这个表单在页面加载后提交,并且我使用下面的代码来完成它。问题在于页面不断重新加载并停留在该循环中。'Submit'onload进入循环

HTML

<body onload="document.getElementById('filters').submit();"> 
<form id="filters" method="post"> 
    <section> 
     <select id="Genre" name="genres" > 
     <option value="Select Genre">Select Genre</option> 
     <option value="All">All</option> 
     {% for row in genre %} 
      <option value="{{row.genre}}">{{row.genre}}</option> 
     {% endfor %} 
     </select> 
     <select id="Rating" name="ratings" > 
     <option value="Select Rating">Sort by Rating</option> 
     <option value="Best">Best</option> 
     <option value="Rating_IMDB">IMDB</option> 
     <option value="Rating_RT">Rotten Tomatoes</option> 
    </select> 
    </section> 
</form> 
</body> 
+1

您需要在您的形式 –

+1

设置一个动作你将永远无法因为这个不提交作出一些改变访问此页面。我们不知道这些确切的变化需要做什么,因为所有这些的预期流程没有问题 – charlietfl

回答

3

现状问题

目前的问题并没有真正提供足够的信息为一个很好的答案,因为我们不知道任何 1)凡形式提交到 2)提交时表单应该做什么

一旦这些被添加,那么这个答案可以进一步改善。

回答

你需要,如果你想让它做什么要补充的一个动作为形式。此外,我不明白为什么你想提交一个表单之前,用户可以输入任何东西。

目前该表格没有任何意义。它有效地作为重定向到你已经在的页面,因为默认action="#"(我认为)。

AJAX

为了做到提交表单没有这个重载循环的equivelant,要使用AJAX。这会向服务器提出一个异步请求,并不实际在浏览器中加载页面。这里是如何:

function loadDoc() { 
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
    if (xhttp.readyState == 4 && xhttp.status == 200) { 
     document.getElementById("demo").innerHTML = xhttp.responseText; 
    } 
    }; 
    xhttp.open("POST", "Where_you_are_submitting_form_to", true); 
    xhttp.send(); 
} 

来源:您W3学校

+0

它是一个显示电影集合的网站。如果表单没有提交,则只有表单提交后才会出现电影。我希望在页面根据select的值加载后立即显示电影。我添加了一个动作,但仍然是相同的结果。 – 0248881

+0

然后,我认为你想要AJAX。我会将其添加到我的答案中。 – thesecretmaster

+0

@ RQ14有没有包含一些代码?请包含所有相关的javascript,因为目前提交表单不会改变网站上的任何内容,只会将表单提交到您已经在的页面上,不做任何更改。首先请让我们知道1)表单提交到哪里,2)页面提交的值是什么。 – thesecretmaster

0

需要把 “行动” 的形式。

<body onload="document.getElementById('filters').submit();"> 
<form id="filters" method="post" action="path"> 
<section> 
    <select id="Genre" name="genres"> 
    <option value="Select Genre">Select Genre</option> 
    <option value="All">All</option> 
    {% for row in genre %} 
    <option value="{{row.genre}}">{{row.genre}}</option> 
    {% endfor %} 
    </select> 
    <select id="Rating" name="ratings"> 
    <option value="Select Rating">Sort by Rating</option> 
    <option value="Best">Best</option> 
    <option value="Rating_IMDB">IMDB</option> 
    <option value="Rating_RT">Rotten Tomatoes</option> 
    </select> 
</section> 
</form> 
</body> 

Fiddle