网站正在自行重新加载

时间:2012-07-18 14:17:21

标签: jquery load reload getjson

我有以下网站,该网站会回拨到其他网域。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title> Example Entry Form </title>

    <script src="http://code.jquery.com/jquery-1.7.2.js" type="text/javascript"></script>
    <script type="text/javascript">
    function getParameters(){
        // login
        //window.showModalDialog('http://localhost:8080/test/login/check.mvc','','dialogWidth:500px; dialogHeight:350px; resizable:no; unandorned:yes; status:no; ');
        //get data
        $.getJSON('http://localhost:8080/test/secure/profile/services/export/getuser.mvc?callback=?',function(res){
            alert('Your name is '+res.lname);
            $('#lastname').val(res.lname);
            $('#firstname').val(res.fname);
            $('#club').val(res.club);
            $('#phone').val(res.phone);
            $('#mobile').val(res.mobile);
            $('#mail').val(res.email);
            $('#street_nr').val(res.streetNr);
            $('#zip_city').val(res.zip + " " + res.city);
            $('#birthday').val(res.birthday);
        })
        .error(function(){
            alert("Error");
        })
        .complete(function(){
            alert("Complete");
        });
        alert("Script End!");
    }
    </script>
</head>

<body >

    <h1>Entry Form</h1>

    <table>
     <tr>
      <td style="width:400px;">
        <form action="save.php" id="FormName">
            <table>
                <tr>
                    <td>Lastname:</td>
                    <td><input type="text" id="lastname"/></td>
                </tr><tr>
                    <td>Firstname:</td>
                    <td><input type="text" id="firstname"/></td>
                </tr><tr>
                    <td>Club:</td>
                    <td><input type="text" id="club"/></td>
                </tr><tr>
                    <td>Mobile:</td>
                    <td><input type="text" id="mobile"/></td>
                </tr><tr>
                    <td>Telephone:</td>
                    <td><input type="text" id="phone"/></td>
                </tr><tr>
                    <td>eMail:</td>
                    <td><input type="text" id="mail"/></td>
                </tr><tr>
                    <td>Street+Nr:</td>
                    <td><input type="text" id="street_nr"/></td>
                </tr><tr>
                    <td>ZIP+City:</td>
                    <td><input type="text" id="zip_city"/></td>
                </tr><tr>
                    <td>Birthday:</td>
                    <td><input type="text" id="birthday"/></td>
                </tr><tr>
                    <td>&nbsp;</td>
                    <td><button type="submit">Send Form</button>
                </tr>
            </table>
        </form>
      </td>
      <td valign="top">
        <a href="" onclick="getParameters();"><img src="script/pic.png" alt="Get Data"/></a>
      </td>
     </tr>
    </table>
</body>
</html>

除了两个主要问题外,所述脚本工作正常:

  1. 仅当有警报()时才有效;在脚本中,它不在&amp; .getJSON()函数中。
  2. 在最后一次警报()之后;火灾(“脚本结束!”)网站正在重新加载(浏览器说:http://code.jquery.com/ - &gt; jquery脚本)并在完成后。所有数据都消失了。
  3. 为什么呢?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

尝试onclick="return getParameters();"并将alert替换为return false;(或者是真的吗?)

或将a标记替换为span。或者将其完全删除,并将onclick添加到img

现在发生的是您启动异步请求并继续执行点击链接时通常会执行的操作。

答案 1 :(得分:0)

您的网页正在重定向,因为您的代码有一个空的href,而且您的功能并未阻止您的网页重定向。

它与警报一起使用,因为警报会阻止窗口重定向,直到您按下确定。

正如迈克尔建议尝试使用return false。

但是使用onClick是一种不好的做法。

或者你可以使用jQuery bind绑定click处理程序(这是一种最佳实践)。

像这样更新您的HTML:

<td valign="top">
        <a href='#' id='someButton'><img src="script/pic.png" alt="Get Data" /></a>
      </td>

然后在脚本标记中,执行以下操作:

 $('#someButton').bind('click', getParameters);

并在您的函数中执行此操作:

function getParameters(e){
 ..... // your code here
 e.stopPropagation();
 e.preventDefault();'
}