重定向不在ie和firefox中工作,但在chrome中工作

时间:2015-02-13 08:33:40

标签: php jquery internet-explorer firefox joomla

我的登录表单仅在chrome中执行。它无法在IE和Firefox中运行。它知道这是正确的用户名,但它不会重定向到页面。我用ajax和joomla。 这是我的代码:

<script>
function Send()
{
jQuery.post("index.php?option=com_market&view=login&format=raw",
    {Username:jQuery("#username").val(),Pass:jQuery("#password").val()},
    function(data)
    {
        jQuery("#loginValid").html(data);
    }); 

}


</script>

<form name="loginForm" id="loginForm" method="post">
<label>Username:</label><input type="text" name="username" id="username"  /><br />
<label>Password:</label><input type="password" name="password" id="password" /><br />
<input type="button" onclick="Send();" value="login" name="loginSubmit" id="login"  />
</form>

地址中的代码:index.php?option = com_market&amp; view = login&amp; format = raw

<?php
session_start();
if(isset($_POST['Username'])) {
    $Username=$_POST['Username'];
    $db = JFactory::getDBO();
    $pass = md5($_POST['Pass']);
    $query ="select id from sb5qt_market_users where username='$Username' and     password='$pass'";
    $db->setQuery($query);
    $db->query();
    $rows = $db->getNumRows();
    $result = $db->loadResult();

    if ($rows == 0) {
        echo "invalid username or password";
    } else {
        $_SESSION['id']=$result;
        echo  '<META http-equiv="refresh" content="0;URL=http://example.com/profile">';
    }
}
?>

2 个答案:

答案 0 :(得分:1)

对我而言似乎是一种奇怪的重定向方式,而且我并不感到惊讶的是浏览器遇到了麻烦。

你可以试试这个:

PHP中的

if($rows == 0)
{
   echo json_encode(array("error" => "invalid username or password", "redirect" => ""));
}
else
{
   $_SESSION['id']=$result;
   echo json_encode(array("error" => "", "redirect" => "http://example.com/profile"));
}

然后在你的Javascript中... ...

jQuery.ajax({ 
    url: 'index.php?option=com_market&view=login&format=raw', 
    data: 'Username=' + jQuery("#username").val() + "&Pass=" + jQuery("#password").val(), 
    type: 'post',
    dataType: 'json',
    success: function(data) 
    {
       if (data['error']) {
         jQuery("#loginValid").html(data['error']);
       }

       if (data['redirect']) {
         location.href = data['redirect'];
       }
   }
});

我还没有测试过这些,但你可以看到我得到的东西......

答案 1 :(得分:1)

尝试添加event.preventDefault()或返回false;在按钮的单击方法上。像这样:

<script>
function Send()
{
jQuery.post("index.php?option=com_market&view=login&format=raw",
    {Username:jQuery("#username").val(),Pass:jQuery("#password").val()},
    function(data)
    {
        jQuery("#loginValid").html(data);
    }); 

}
$("#login').click(function(){
    return false;
});

</script>
相关问题