2014-01-05 30 views
0

不知道這是否可能,但我有一個頁面提交的AJAX表單,如果它符合某些條件,它應該自動將用戶帶到另一個頁面。在標題標籤之前輸出NOTHING它只是一堆條件。通過ajax時,頁眉不會重定向

問題:頭重定向不工作...

AJAX

$('form').on('submit', function (e) { 
    e.preventDefault(); 
    $.ajax({ 
    type: 'post', 
    url: '_ajax/add.php', 
    data: $('form').serialize(), 
    success: function (data) { 
     $("input").val('Company Name'); 
     $("form").hide(); 
     getInfo(); 
    } 
    }); 
}); 

add.php

$row = mysqli_fetch_array($result); 
$id = $row['id']; 
header("Location: http://localhost/manage/card.php?id=$id"); 
+2

不,這是行不通的。你需要通過ajax返回一個重定向參數,並讓javascript做重定向。 –

+0

你能舉個例子嗎? – user934902

回答

1

您指明問題,根據一定條件下,你想要重定向。

要做到這一點,你會想改變你的JavaScript以包含if條件,並觀察某些反應。

我會建議修改您的迴應爲json,以便您可以回傳不同的信息(例如成功狀態,以及重定向url或其他可能需要的信息)。

$('form').on('submit', function (e) { 
    e.preventDefault(); 
    $.ajax({ 
    type: 'post', 
    url: '_ajax/add.php', 
    data: $('form').serialize(), 
    success: function (data) { 
     var response = $.parseJSON(data); 
     if (response.redirect) { 
      window.location = response.redirect_url; 
     } else { 
      $("input").val('Company Name'); 
      $("form").hide(); 
      getInfo(); 
     } 
    } 
    }); 
}); 

至於你add.php文件,你會想改變這是更多的東西,像這樣:

$json = array(
    'redirect' => 0, 
    'url'  => '', 
} 

if (...condition for redirect...) { 
    $row = mysqli_fetch_array($result); 
    $id = $row['id']; 
    $json['redirect'] = 1; 
    $json['redirect_url'] = "Location: http://localhost/manage/card.php?id=$id"; 
} 
echo json_encode($json); 
die(); 
+0

這似乎是最好的解決方案,但是我有點困難要整理一些東西來使它工作。我讓你知道,如果我可以整理出來 – user934902

+0

Im獲取與.parseJSON(數據)意外的令牌錯誤,當我消除解析它只是返回位置作爲字符串對這個錯誤的任何想法?我可以發佈代碼 – user934902

+0

@ user934902 - 這聽起來像你沒有使用'json_encode()'。如果你不這樣做,那麼parseJSON會拋出錯誤。 –

0

你似乎有AJAX是如何工作的理解小姐。 Introduction to Ajax
您的重定向似乎不工作的原因是因爲Ajax調用不會直接影響您的瀏覽器。這是幕後調用。

要從AJAX調用中獲取數據,您需要對返回的數據執行一些操作。

success: function (data) { 
    $("input").val('Company Name'); 
    $("form").hide(); 

    //You need to do something with data here. 
    $("#myDiv").html(data); //This would update a div with the id myDiv with the response from the ajax call. 

    getInfo(); 
} 
3

標題只能在任何主體發送到瀏覽器(因此名稱標頭/正文)之前修改。由於您已將AJAX發送到瀏覽器,因此無法再修改標題。但是,您可以讓通過AJAX調用的add.php腳本返回$id參數。然後,可以在JavaScript中使用該參數重定向頁面:window.location = 'http://localhost/manage/card.php?id=' + id。在PHP header()

更多信息:http://www.php.net/manual/en/function.header.php

AJAX

$('form').on('submit', function (e) { 
    e.preventDefault(); 
    $.ajax({ 
    type: 'post', 
    url: '_ajax/add.php', 
    data: $('form').serialize(), 
    success: function (data) { 
     window.location = 'http://localhost/manage/card.php?id=' + data; 
    } 
    }); 
}); 

add.php

$row = mysqli_fetch_array($result); 
$id = $row['id']; 
echo $id; 
exit; 
+0

這是一個在PHP的時期(。),這不是問題在這裏。 –

+0

@AshleyMedway如果你能看到我使用的'+ id'是JavaScript。因此'window.location ='。 – Sam

+0

Apollogies,但我仍然認爲OP希望他的ajax調用通過添加運行。php並返回結果 –

相關問題