2011-09-03 115 views
1

我现在在一个泡菜......我有这个函数从页面获取2个变量,然后在抓取数据后运行一个sql查询。从Javascript运行SQL查询

function delete(id,date){ 
    confirmdel=confirm('Are you sure?'); 
    if(confirmdel){ 
     var curid = id; 
     var when = date; 

     //sql code should go here 

    } 
    else{ 
     //don't do anything 
     return false; 
    } 
    } 

如何从函数运行sql查询或将数据发送到php文件?我尝试使用jquery,但它会忽略它,所以如果我可以使用jquery,请解释/举例说明如何使用它。

回答

4

JavaScript不能在其自己的数据库处理,它只是可以告诉浏览器做什么,服务器提交的页面浏览器后,才加载。所以我想你必须使用AJAX。这是一个使用非常简单的jQuery:

... 

$.post('process.php', {id:curid, date : when}, function(data) { 

    alert(data); 
    //data contains all output from process.php, 
    //either in json-format if you jsonencode a results-array 
    //or just a simple string you echo in the php 

    return false; //prevent from reloading the page 
}); 

... 

你process.php可能类似于:

<?php 

$curid = $_POST['id']; 
$when = $_POST['date']; 

//run the query 

echo jsonencode($results_array); 

//or check if query succeeded and echo e.g. 'ok' or 'failed' 
?> 

你的想法...;)

//编辑:

您应该使用jQuery UI作为对话框以避免评论中所述的消息。这可能是这样的:

<div id="dialog_box" style="display: none;"> 
    Really delete? 
</div> 

$('#dialog_box').dialog({ 
    title: 'Really delete this stuff?', 
    width: 500, 
    height: 200, 
    modal: true, 
    resizable: false, 
    draggable: false, 
    buttons: [{ 
    text: 'Yep, delete it!', 
    click: function(){ 
     //do the post 
    } 
    }, 
    { 
    text: 'Nope, my bad!', 
    click: function() { 
     $(this).dialog('close'); 
    } 
    }] 
}); 
+2

男人,两个Cartmans是太多的一个职位:D(对这个问题完全无关的评论) – tugberk

+1

@tugberk大声笑,甚至没有注意到,但那是......呃......“拧你们,我是回家!' :-D – Quasdunk

+0

当我这样做的时候,它可以工作,但我收到一条消息,说明是否再显示额外的警报框。我该如何摆脱?其他人是否会收到类似的消息? – cbr0wn

0

做一个web服务。 jQuery的功能可以让你调用web服务,但是你不能用jQuery构建web服务。

0

AFAIK,你不能直接在网页上通过JavaScript运行sql查询。即使如此,这也是最糟糕的事情。

最好的实现方法是编写一个服务(REST服务将是一个很好的选择),它将连接到数据库,使用数据。然后通过JavaScript使用该服务将是更好的方法。

看看JQuery.ajax() API来了解如何将Http发布到服务器。

+0

我可以在JavaScript中使用这个jQuery的方法? – cbr0wn

+0

jQuery是用JavaScript编写的JavaScript代码,当然你可以使用它。你会如何使用它? – Halcyon

+0

@ cbr0wn JQuery不是另一种单独的语言。这是一个JavaScript库和一个很好的(我猜这就是很多人认为它是另一种语言的原因)。您可以在网页上的''元素内使用JQuery。 – tugberk

0

您应该将数据发送到一个php文件。

$.post("delete.php", { id: id, date: date }, function(){alert('delete success!');}) 
.error(function() { alert("error"); });