【发布时间】:2010-12-13 19:24:31
【问题描述】:
我对处理 Javascript、JSON 和 Perl 的方式有点迷茫,而且大多数示例都是用 PHP 编写的,这对我没有帮助。
我有一个页面(称为 main.html),其中有一个来自 MySQL 的数据,我可以选择按 id 删除一行。
然后我让 Javascript 将 id 发送到页面 apagar.html,这现在有点混乱,因为我试图处理 JSON,但是使用 GET 它可以工作,并且缺少的是删除请求后的刷新。但我想在我的代码中引入 JSON 并使页面更加动态,但不知道如何。
在我的 apagar.html 中,如果 url 中有任何 id,我只有要删除的代码。
我已阅读 IBM 系列(精通 Ajax):http://www.ibm.com/developerworks/web/library/wa-ajaxintro11.html?S_TACT=105AGX08&S_CMP=EDU
感谢您的帮助,上面是我正在使用的javascript:
<script language="javascript" type="text/javascript">
var pedido = false; // pedido = request
try {
pedido = new XMLHttpRequest();
}
catch (failed) {
pedido = false
}
if (!pedido) {
alert("O seu browser não é suportado."); // Browser not supported
}
function Eliminar(rid) { // relativo a main.html & apagar.html
//alert("SK"); //debug
if ( confirm("Deseja realmente eliminar?") ) {
var url = "/back/apagar.html?rid=" + escape(rid);
/*POST*/
pedido.open("POST", url, true);
pedido.onreadystatechange = updatePage;
pedido.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
pedido.send( contacto.toJSONString() );
//pedido.open("GET", url, true);
//pedido.send(null);
}
return false;
}
以及 Mason apagar.html 页面
<%args>
$rid => ''
</%args>
<%once>
use lib '/var/www/projectox/';
use db::Conexao; #interacao com a DB
use DBI;
use Apache2::Cookie; #interacao com cookies
</%once>
<%init>
% # vê se existem cookies
my $cookies = Apache2::Cookie->fetch($r);
if(!$cookies){ #sem cookies é enviado para o login
$m->redirect('login.html');
}
if($rid) {
# vai eliminar os dados pelo valor do id ($rid)
#ligacao à DB
my $tomada = db::Conexao->Conexao();
my $sql = $tomada->prepare("Delete from Contactos where id=?") ||
die "Impossivel de realizar a operação: $!";
$sql->execute($rid) || die "Não foi possivel executar: $!";
#desliga da DB
$tomada->disconnect || warn "Não foi possivel terminar a ligação!";
</%init>
【问题讨论】: