Перенаправление с PHP после вызова ajax

Я делаю следующий вызов ajax:

$('#save_sale').click(function() { var save_sale = 1; $.ajax({ type: 'GET', url: 'summary.php', data: {save_sale: save_sale}, success: function(data) { /* Do something here?? */ }, error: function(xhr, ajaxOptions, thrownerror) { } }); }); 

Вот мой PHP:

 function createSale() { if($sale_id = $this->link->inQuery("INSERT INTO nya_forsaljningar(personnr, status, datum) VALUES('".$this->personnr."','".$this->status."','".$this->sale_date."')")) { $this->link->inQuery("UPDATE services_temp SET active=1 WHERE temppdtls='".$this->personnr."'"); $this->link->inQuery("UPDATE summary_temp SET active=1 WHERE personnr='".$this->personnr."'"); header("Location: addcust.php?new_sale=$sale_id"); exit; } else { return false; //Kunde inte skapa försäljningen } } if(isset($_GET['save_sale'])) { $sale_date = date('Ym-d'); //Datumet då man skapar försäljning $personnr = $_SESSION['fil'][3]; //Personnummer på personen, använder detta för att ta fram de olika delarna från tabellerna $save_true = $_GET['save_sale']; //Försäkrar oss av att vi ska hantera en uppläggning av en nyförsäljning $new_sale = new newSale($personnr, $sale_date, $save_true, $link, $status='Obehandlad'); //Skapar ett objekt av försäljningen som vi använder för att hantera den nya försäljning, kolla om den är ok, skapar kundbilden, nekar osv. if($new_sale->checkService()) { $new_sale->createSale(); //Skapar försäljningen } else { echo "Kunde inte skapa försäljningen"; exit; } } 

После создания продажи я хочу перенаправить на addcust.php? New_sale = $ sale_id

Как я могу это сделать?

Вы перенаправляете успех:

 $('#save_sale').click(function() { var save_sale = 1; $.ajax({ type: 'GET', url: 'summary.php', data: {save_sale: save_sale}, success: function(data) { window.location.href = 'addcust.php?new_sale=' + data }, error: function(xhr, ajaxOptions, thrownerror) { } }); }); 

Независимо от того, что вы откликнулись на PHP-скрипт, вы будете в data . Итак, echo $sale_id и у вас будет URL.

Вы можете использовать JavaScript для перенаправления в обработчик успеха:

 success: function(data) { window.location = 'newpage.php'; }, 

Это невозможно сделать с перенаправлением PHP, потому что это будет перенаправлять только вызов ajax, а не исходное окно браузера.

Если вы хотите использовать идентификатор продажи в URL-адресе, вам нужно будет вывести его так, чтобы к нему можно было получить доступ:

 $saleId = $new_sale->id; // or however you get the sale ID echo json_encode(array('saleId' => $saleId)); // output JSON containing the sale ID 

Ajax:

 $.ajax({ type: 'GET', url: 'summary.php', dataType : 'json', // tell jQuery to parse the response JSON data: {save_sale: save_sale}, success: function(data) { window.location = 'addcust.php?new_sale=' + encodeURIComponent(data.saleId); }, error: function(xhr, ajaxOptions, thrownerror) { } }); 

на вашей странице js

  $.ajax({ type: 'GET', url: 'summary.php', data: {save_sale: save_sale}, //success: function(data) { /* Do something here?? */ }, error: function(xhr, ajaxOptions, thrownerror) { } }).success(function(data) { window.location('addcust.php?new_sale='+data.id) }); 

на вашем php-скрипте эхо-идентификатор

 $data['id'] = <sale_id>; echo json_encode($data);exit 

надеюсь, что это сработает.

Верните $sale_id из вашего PHP-файла, если продажа будет успешной, через echo (при условии, что $ new_sale-> id вернет id):

 if($new_sale->checkService()) { $new_sale->createSale(); //Skapar försäljningen echo $new_sale->id(); } 

Затем загрузите его в свои данные ответа и добавьте его в свое перенаправление:

 success: function (data) { window.open("addcust.php?new_sale="+data, "_top"); }, 

Это пример использования переменных, которые я не уверен, поскольку я не знаю, как работает ваш класс. Однако логика остается прежней.

Ох, и кулак удар для того, чтобы быть swedish.

Если вы хотите сделать полную переадресацию, вы можете использовать window.location = 'addcust.php? New_sale =' + youridvariable. В обратном вызове успеха.