Я делаю следующий вызов 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. В обратном вызове успеха.