0

我有以下站点,它会回调到不同的域。

<!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. 它仅在有 alert() 时才有效;在脚本中,它不在 &.getJSON() 函数中。
  2. 在最后一个警报()之后;触发(“脚本结束!”)站点正在重新加载(浏览器显示:http: //code.jquery.com/ -> jquery 脚本)并在完成后。所有数据都没了。

为什么?我该如何解决这个问题?

4

2 回答 2

0

您的页面正在重定向,因为您的标签有一个空的 href 并且您的函数没有阻止您的页面重定向。

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

正如迈克尔建议的那样,尝试使用 return false。

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

或者,您可以使用 jQuery 绑定(这是最佳实践)绑定点击处理程序。

像这样更新您的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();'
}

于 2012-07-18T14:29:21.210 回答
0

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

或将a标签替换为span. 或者完全删除它并添加onclickimg.

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

于 2012-07-18T14:22:41.317 回答