如何使用jquerys DataTables中的select方法更新数据库?我想弄清楚的是如何在DataTable上选择一行,并通过单击按钮更新数据库中的几个字段。单击该按钮时,我希望它在数据库的Date_Complete部分中提交今天的日期。如何更新这样的行?
var table = $('#processing').DataTable();
$('#processing tbody').on( 'click', 'tr', function () {
var rowdata = table.row( this ).data();
console.log(rowdata);
} );
我能够在JS中获取数组但是如何将其转换为获取正确行的id,然后在ColdFusion中更新该行的Date_Complete?
<cffunction name="updateRecord" access="remote" returntype="void">
<cfargument name="id" type="numeric" required="true">
<cfset var completeBatch = ''>
<cfquery name="completeBatch">
UPDATE dbo.Dealer_Track_Work
SET Date_Complete = getDate()
WHERE ID = <cfqueryparam value="#arguments.id#" cfsqltype="cf_sql_integer">
</cfquery>
</cffunction>
如何将ID从JS传递给CF函数?
更新了JS ,但AJAX仍未运行updateRecord: 接收&#34;在第1行的第1行找到无效的CFML构造。&#34;为了我的功能。
$(document).ready(function () {
var table = $('#processing').DataTable();
// Decide if row from datatable is chosen or not to display Modal
$('#CompleteIt').click(function(){
var rowIndex = $('#selectedRow').val();
if (rowIndex){
console.log("Item ID: " + rowIndex);
} else {
console.log("No item id selected!");
alert("Please select batch to be completed.");
return false;
}
});
// When row is selected from datatable assign item id to hidden "selectedRow" textbox
$('#processing tbody').on( 'click', 'tr', function () {
var rowdata = table.row( this ).data();
console.log(rowdata);
var selectedIndex = $('#selectedRow').val();
if (selectedIndex == rowdata.id) {
$('#selectedRow').val('');
}
else {
$('#selectedRow').val(rowdata.id);
}
});
// What happens when a user hits the "Accept" button on the dealer form
$(".completed_accept").click(function(){
var CompletedName = $("#CompletedName").val();
if (!CompletedName){
alert("Please select associate.");
if ($.browser.Chrome) {
$('#CompletedName').click();
} else {
$('#CompletedName').focus();
}
return false;
} else {
$('#AssociateCompleted').modal('hide');
}
});
$('#employeeLoggedOut').on('submit', function (e) {
e.preventDefault();
//alert($(this).serialize());
$.ajax({
// the location of the CFC to run
url: "proxy/Completed.cfm",
// send a GET HTTP operation
type: "post",
// tell jQuery we're getting JSON back
dataType: "json",
// send the data to the CFC
data: $('#selectedRow').serialize(),
// this gets the data returned on success
success: function (data) {
console.log(data);
window.location.reload();
},
// this runs if an error
error: function (xhr, textStatus, errorThrown) {
// show error
console.log(errorThrown);
}
});
});
});
如何调用函数来运行方法并将ID传递给参数?
如何让我的JS rowdata.id在CF函数中等于WHERE id =
?
WHERE id = <cfqueryparam value="#arguments.id#" cfsqltype="cf_sql_integer">
答案 0 :(得分:1)
JQuery DataTable
用于在客户端网页中使用HTML 表,而不是使用数据 bases (例如MySQL,PostgreSQL) ,等),往往是服务器端。
从description - 我的重点 - :
DataTables是jQuery Javascript库的插件。它是一个 高度灵活的工具,基于进步的基础 增强功能,并将高级交互控件添加到任何 HTML 表强>
出于某种原因,我:
$.get('dealerTracking.cfc?method=updateRecord&id=rowdata.id');
没有开火,它正在跳过这一步。
我认为你打电话的原因是&#34;跳过&#34;这里是您应该包含您要联系的服务器的主机名,但是您没有这样做只会让它跳过外观。每当我完成AJAX调用时,他们都会遵循这种模式:
$.get('https://hostname.domain/server-side-script-to-contact ...')
但您的代码缺少主机名信息,似乎不知道谁要联系。
此外,您的var CompletedName = $("#CompletedName").val();
可能会受到怀疑,特别是因为您在else
块中使用此内容,如果它进入if
的正文,则可能会被完全跳过相反 - 这取决于你碰巧输入的内容,所以我不能告诉你。
我想要做的就是点击按钮时使用js来调用cf函数来更新日期行,说明它现在已经完成了
这是使用AJAX的一小部分示例(现在没有服务器进行测试,但布局应该让您朝着正确的方向前进)。在这种情况下,JS代码使用AJAX向服务器页面发送请求,其中包含服务器将调用的脚本的一些参数。
[...]
<body>
<button id="AjaxRequestButton" onclick="sendAjaxRequest();">Send AJAX Request</button>
<br/><br/>
<input id="ServerResponseBox" type="text" style="width: 50%;" readonly></button>
</body>
<script>
// sends HTTP request in the background when button is pressed
function sendAjaxRequest() {
console.log("Sending AJAX request to server...");
$.ajax({
type : "GET", // type of request: GET HTTP request
url : "ajax_demo.pl", // script to execute in our case
data : "action=add_msg&msg='my-message'", // arguments for server script; can be user inputs retrieved from widgets, etc.
// anonymous function callback invoked when server response arrives
success : function(json_data) {
// process server response
console.log("Received server response.");
$("[id='ServerResponseBox']").val(json_data.message); // notice we never refreshed entire page for this
// alert("Server response is: " + json_data.message);
},
dataType: "json" // client-side should expect JSON-type data for the callback above
});
}
</script>
[...]
此页面有一个按钮,并确保将其onclick
事件设置为调用稍后定义的JS函数sendAjaxRequest
。该函数具有$.ajax({ ... })
调用(JQuery提供了几种方法),它将参数作为请求的一部分发送。这是由以下两行专门完成的:
url : "ajax_demo.pl",
data : "action=add_msg&msg='my-message'"
url
是您需要在服务器上调用的内容(即页面/脚本),data
是您传递脚本使用的参数并确定要执行的操作。< / p>
服务器的骨架程序(抱歉,Perl就是我现在所拥有的,但它非常简单)看起来类似于这样的东西,你可以获得由客户端AJAX调用,做一些有趣的事情,然后返回某种响应。
#!/usr/bin/perl
use strict;
use warnings;
# CPAN modules
use CGI;
use JSON;
print "Content-type: text/html\n\n";
my %args = # parse request URL here to get arguments
if( defined( $args{action} ) ){
if($args{action} eq "add_msg") {
print add_message( $args{msg} );
}
} else {
print default_response();
}
sub add_message {
# create database connection,
# execute SQL query against database
# return a message to let the client know how things went
my $json = { message => "some message for client" };
return encode_json($json);
}
sub default_response {
my $json = { message => "The meaning of life is... 42? o.O" };
return encode_json($json);
}
我希望这会让你走上正确的道路。