2011-01-24 2 views
1

Это то, что я пытаюсь сделать:Перенаправление на динамическую страницу с Javascript

function show_confirm() 
{ 
var r=confirm("Are you sure you want to delete this record?"); 
if (r==true) 
    { 
    window.location = "delete.php?case=<?php echo $case; ?>"; 
    } 
else 
    { 
    window.close() 
    } 
} 

<input type="image" src="images/delete.gif" name="image" onclick="show_confirm()"> 

Но он перенаправляет здесь: http://localhost/delete.php?case=

Когда он должен переадресовать здесь: локальный/delete.php? случай = $ случай

* не может редактировать предыдущий пост

+2

В чем проблема с тем, что у вас там есть? – Prescott

+0

Пожалуйста! Не позволяйте пользователю передавать php-код на сервер. – tcooc

+0

не беспокоился о том, что вредоносные пользователи используют его для внутренней системы. это работает: window.location = "delete.php" ;. Остановка работы с PHP – Mike

ответ

0

Вы либо сгенерировать JavaScript динамически или хранить переменная где-нибудь на вашей странице, где вы можете получить доступ с помощью JavaScript (например, скрытое поле).

1

<?php echo $nt['id']; ?> - это PHP.

location.href='delete.php?case='+case; 

лучше, если ваша переменная case имеет значение.

0

Что именно вы пытаетесь достичь? Вы хотите, чтобы delete.php передавалось значение $nt['id'] или вы хотите, чтобы скрипт delete.php передавался кодом <?php echo $nt['id']; ?>?
Если вам нужна последняя, ​​вы можете сделать Eval на значении $_GET['case'] в delete.php:

eval($_GET['case']); 

Вы должны удалить <?php и ?> с переадресацией на эту работу. Имейте в виду, что это очень небезопасно, и я бы настоятельно предложил против этого. На самом деле вам было бы гораздо безопаснее указать имя массива (используя переменные переменные) и значение ключа вместо исполняемого кода.

$array = $$_GET['array']; 
echo $array[$_GET['key']]; 

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

if(!in_array($_GET['array'], array('nt','otherArr','arr')) { 
    die('Nice try, my l33t enemy!'); 
} 
0

Возвращение false в onclick случае, чтобы остановить браузер от обработки нажмите на ссылку, как это:

<input ... onclick="show_confirm(); return false"> 

ИЛИ

<input ... onclick="return show_confirm()"> 

, а затем изменить возвращение show_confirm() к возврат false.

+0

Отправил свой ответ. Это яснее? –

0

Для того чтобы ваш код работал, на сервере должен быть запущен PHP. <?php ?> теги обозначают PHP-код, который выполняется на сервере, а не внутри клиента.

Что браузер должен видеть в исходном разметке является:

window.location = "delete.php?case=1333"; // Or some such ID 

Для этого, чтобы быть в случае, сервер заменит PHP код с найденным значением в массиве по имени ключа ид.Например:

<?php 

$nt = array('id'=>1333); 

echo "window.location = 'delete.php?case={$nt['id']}'"; 

?> 
0

Может быть U может использовать его, прежде чем он работает, вы должны загрузить Jquery библиотеки: Download library

$(document).ready(function(){ 
$(':image').click(function(){  
    row_id= $(this).attr('row_id'); 
    show_confirm(row_id);        
}); 

function show_confirm(row_id) 
{ 
var r=confirm("Are you sure you want to delete this record?"); 
if (r==true) 
    { 
    window.location = "delete.php?case=" + row_id; 
    } 
else 
    { 
    window.close() 
    } 
} 
}); 

HTML:

<input type="image" src="images/delete.gif" name="image" row_id='1'> 

Надеется, что это может помочь ..

0

Ваш $ case должен знать, когда PHP создает страницу, похоже, что она неизвестна, поэтому почему она пуста ...

Когда вы создаете элемент ввода (с изображением) - знаете ли вы свой случай? Если да, вы можете передать его в качестве аргумента show_confirm (case) ... и изменить часть с помощью:

window.location = "delete.php? Case = <? Php echo $ case;? >";

для

window.location = "delete.php случае =?" + Корпус;

Смежные вопросы