javascript
  • php
  • jquery
  • ajax
  • smarty
  • 2014-01-28 125 views 0 likes 
    0

    我正在为游戏服务器卖家编码CMS,但遇到了问题。我有以下代码:AJAX表单submisson

    <div id="ServerResponse" align="center"></div> 
    <form id="RegistrationForm" method="post" action="/account.php?do=create"> 
        <input type='text' placeholder='{#Name#}' id='Name' name="Name" autocomplete="off"> 
        <input type='text' placeholder='{#Surname#}' id='Surname' name="Surname" autocomplete="off"><br /> 
        <select name="day" id="day" style='width: 55px;'> 
        <option value="1">1</option> 
        <option value="2">2</option> 
        <option value="3">3</option> 
        <option value="4">4</option> 
        <option value="5">5</option> 
        <option value="6">6</option> 
        <option value="7">7</option> 
        <option value="8">8</option> 
        <option value="9">9</option> 
        <option value="10">10</option> 
        <option value="11">11</option> 
        <option value="12">12</option> 
        <option value="13">13</option> 
        <option value="14">14</option> 
        <option value="15">15</option> 
        <option value="16">16</option> 
        <option value="17">17</option> 
        <option value="18">18</option> 
        <option value="19">19</option> 
        <option value="20">20</option> 
        <option value="21">21</option> 
        <option value="22">22</option> 
        <option value="23">23</option> 
        <option value="24">24</option> 
        <option value="25">25</option> 
        <option value="26">26</option> 
        <option value="27">27</option> 
        <option value="28">28</option> 
        <option value="29">29</option> 
        <option value="30">30</option> 
        <option value="31">31</option> 
        </select> 
    
        <select name="month" id="month" style='width: 90px;'> 
        <option value="January">January</option> 
        <option value="February">February</option> 
        <option value="March">March</option> 
        <option value="April">April</option> 
        <option value="May">May</option> 
        <option value="June">June</option> 
        <option value="July">July</option> 
        <option value="August">August</option> 
        <option value="September">September</option> 
        <option value="October">October</option> 
        <option value="November">November</option> 
        <option value="December">December</option> 
        </select> 
    
        <select name="year" id="year" style='width: 70px;'> 
        <option value="1950">1950</option> 
        <option value="1951">1951</option> 
        <option value="1952">1952</option> 
        <option value="1953">1953</option> 
        <option value="1954">1954</option> 
        <option value="1955">1955</option> 
        <option value="1956">1956</option> 
        <option value="1957">1957</option> 
        <option value="1958">1958</option> 
        <option value="1959">1959</option> 
        <option value="1960">1960</option> 
        <option value="1961">1961</option> 
        <option value="1962">1962</option> 
        <option value="1963">1963</option> 
        <option value="1964">1964</option> 
        <option value="1965">1965</option> 
        <option value="1966">1966</option> 
        <option value="1967">1967</option> 
        <option value="1968">1968</option> 
        <option value="1969">1969</option> 
        <option value="1970">1970</option> 
        <option value="1971">1971</option> 
        <option value="1972">1972</option> 
        <option value="1973">1973</option> 
        <option value="1974">1974</option> 
        <option value="1975">1975</option> 
        <option value="1976">1976</option> 
        <option value="1977">1977</option> 
        <option value="1978">1978</option> 
        <option value="1979">1979</option> 
        <option value="1980">1980</option> 
        <option value="1981">1981</option> 
        <option value="1982">1982</option> 
        <option value="1983">1983</option> 
        <option value="1984">1984</option> 
        <option value="1985">1985</option> 
        <option value="1986">1986</option> 
        <option value="1987">1987</option> 
        <option value="1988">1988</option> 
        <option value="1989">1989</option> 
        <option value="1990">1990</option> 
        <option value="1991">1991</option> 
        <option value="1992">1992</option> 
        <option value="1993">1993</option> 
        <option value="1994">1994</option> 
        <option value="1995">1995</option> 
        <option value="1996">1996</option> 
        <option value="1997">1997</option> 
        <option value="1998">1998</option> 
        <option value="1999">1999</option> 
        <option value="2000">2000</option> 
        <option value="2001">2001</option> 
        <option value="2002">2002</option> 
        <option value="2003">2003</option> 
        <option value="2004">2004</option> 
        <option value="2005">2005</option> 
        <option value="2006">2006</option> 
        <option value="2007">2007</option> 
        <option value="2008">2008</option> 
        <option value="2009">2009</option> 
        <option value="2010">2010</option> 
        <option value="2011">2011</option> 
        <option value="2012">2012</option> 
        <option value="2013">2013</option> 
        <option value="2014">2014</option> 
        </select> 
    
        </br> 
    
        <input type='text' placeholder='{#Username#}' id='Username' name="Username" autocomplete="off"><br /> 
        <input type='password' placeholder='{#Password#}' id='Password' name="Password" autocomplete="off"><br /> 
        <input type='password' placeholder='{#RPassword#}' id='RPassword' name="RPassword" autocomplete="off"><br /> 
        <input type='text' placeholder='EMail' id='Email' name="Email" autocomplete="off"><br /> 
        <input type='submit' value='{#Registration#}'> <input type="reset" value="{#ResetF#}"><br /> 
    </form> 
    
    </center> 
    

    的事情是,我不能让这个形式通过AJAX发表后的数据,它只是打开account.php?do=create页。

    你能帮我解决这个问题吗?

    喜欢的jquery.js所有的JS,jquery.form.js包括

    我使用这个代码做AJAX的东西:

    <script type="text/javascript"> 
        $(document).ready(function(){ 
        var options = { 
         target: "#ServerResponse", 
         timeout: 3000 
        }; 
    
        $('#RegistrationForm').submit(function() { 
         $(this).ajaxSubmit(options); 
         return false; 
        }); 
        }); 
    </script> 
    

    而且我使用Smarty的,并且代码中提到以上是{literal}{/literal}的标签。

    +0

    控制台中的错误? domready中? – dfsq

    +0

    完全没有错误,是的,准备好 –

    +1

    'e.preventDefault()'紧跟在$('#RegistrationForm')之后。submit(function(){'也许? –

    回答

    1

    Submit在窗体上是一个event并取消提交事件的默认操作,您需要使用event.preventDefault();See Here

    的preventDefault

    如果事件可取消,所述的preventDefault方法用于 表示该事件要被取消,这意味着通常所采取的实现作为所述事件的结果的任何默认动作 将不会发生 。在事件流的任何阶段,如果调用preventDefault方法 ,则事件被取消。与 相关的任何默认操作都不会发生。将此方法调用为不可取消的 事件不起作用。一旦调用了preventDefault,它将在整个事件传播的剩余时间内保持有效。此方法可用于事件流程的任何阶段。

    也许试试你的ajax这种方式。

    $('#RegistrationForm').submit(function(e) { 
    e.preventDefault(); 
    var postData = $(this).serialize(); 
    var formURL = $(this).attr("action"); 
    $.ajax({ 
        type: "POST", 
        url: formURL, 
        timeout: 3000, 
        data: postData, 
        success: function(response){ 
         $("#ServerResponse").html(response); 
        }   
        }); 
    }); 
    
    +0

    Thx,但是sinse im使用smarty和html5,我只是对每个表单字段应用了必需的标签,也创建了错误页面,看起来不错。无论如何,Thx 4你的帮助 –

    0

    尝试添加到您的表单元素onsubmit="return false"

    如果不解决它,而是它只是什么都不做,然后使它onsubmit="functionName();return false"

    或者自己添加事件处理程序的表单元素,如果你特别关注不使用JavaScript属性。

    +0

    尝试过,仍然是同样的事情,它只是忽略js,不知道为什么 –

    +0

    尝试用#替换动作值,看看是否修复它。这在多个浏览器中,并清除您的缓存? – David

    +0

    试图在IE10中,Safari(最新),Chrome(最新),Firefox(最新) - 给出了相同的结果,只需点击提交按钮后重定向到提到的页面。浏览器缓存被禁用,服务器端缓存也被禁用 –

    相关问题