- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 AJAX 的新手,我正在尝试读取整个页面并在不刷新的情况下更改其中的元素。
我有一个看起来像这样的页面:
我正在使用 PHP 和 JQuery。每当我单击任何 tr
时,它都会获取 id 并将 db 中分配的数据放入表单中的该 id。所以我可以更新用户的数据。
显然,当表单为空时,它是数据库中的标准插入。
当您单击每个 tr
(Eliminar) 的最后一个 td
时,它会从数据库中删除该用户。
我的文件:
我想用 Ajax 刷新所有这些页面,但我得到如下信息:
我的所有页面都已插入到表单中,而不是用新页面替换我的页面,或者只用新页面替换表单。
有什么提示/指南可以帮助我学习吗?我已经搜索了该站点中所有相关的 AJAX 内容。还有 JQuery 网站...
我真的不明白 AJAX 是如何工作的以及如何将它与 JS 和 PHP 联系起来
相关代码:
//Capturador de eventos
$(document).ready(function(){
//Clickar en cualquier lado del tr (menos el ultimo td) para actualizar ese registro
$("#tablaDatos tr td:not(:last-child").click(function() {
if (confirm("¿Seguro que desea modificar el registro?")){
$("#idSelected").val($(this).closest('tr').attr('id'));
var data = $('#idSelected').serialize();
$.post(
'crud.php',
{data: data},
function(response){
$('#result').html(response);
}
);
return false;
}else
return false;
});
//Clickar en el borrar del listado para eliminar ese registro
$("#tablaDatos input").click(function(){
if (confirm("¿Seguro que deseas borrarlo del registro?")){
$("#idSelected").val($(this).closest('tr').attr('id'));
$("#eliminar").val("Eliminar");
var data = $('#idSelected').serialize();
$.post(
'crud.php',
{data: data},
function(response){
$('#result').html(response);
}
);
return false;
}else
return false;
});
// Clickar en Alta/Modificar para enviar los datos al crud a través de post
$('#submit').click(function() {
var data = $('#envioDatos').serialize();
$.post(
'crud.php',
{data: data},
function(response){
$('#envioDatos').html(response);
$("#envioDatos input, textarea").val('');
});
return false;
});
});
<?php
// INCLUDES
include 'lib/pintarHTML.php';
include 'lib/database.php';
// VARS
$tableName = 'ALEJANDRO';
$clientes = array ();
$page = null;
$body = null;
$elemSel = null;
$obj_pintar = new pintarHTML ();
$ID = null;
$result = null;
$type = null;
// CONECTION DB
$obj = new database ();
// POST READ
if (isset ( $_POST )) {
mpr($_POST);
if ($_POST['alta'] == "Alta" && empty ( $_POST['id'] )) {
// Llamo a insertar
$result = $obj->insert ( $_POST );
} else
if ($_POST['modificacion'] == "Modificacion" && ! empty ( $_POST['id'] )) {
// Llamo a modificar
$result = $obj->update ( $_POST );
} else
if ($_POST['eliminar'] == "Eliminar" && ! empty ( $_POST['idSelected'] )) {
// Llamo a eliminar
$result = $obj->delete ( $_POST );
} else
if ($_POST['idSelected'] && empty ( $_POST ['eliminar'] )) {
// Elemento Seleccionado
$ID = $_POST['idSelected'];
}
}
// Client list
$clientes = $obj->select ( $tableName );
// Title
$body .= $obj_pintar->pintarTitulo ( 'LISTADO DE CLIENTES' );
// Check ID
if (isset ( $ID )) {
// Formulario relleno con los datos del usuario para modificarlos
$elemSel = $obj->select ( $tableName, '*', 'id=' . $ID, null );
$body .= $obj_pintar->pintarFormulario ( $elemSel );
} else {
// Formulario vacío para alta de usuario
$body .= $obj_pintar->pintarFormulario ( $elemSel );
}
// Page echo
if (!empty($result)) {
$body .= $obj_pintar->pintarMessage($result);
}
$body .= $obj_pintar->pintarTable ( $clientes );
$page = $obj_pintar->composeHTML ( $body );
echo $page;
// Debug
function mpr($value, $text = null) {
echo "<pre>" . $text;
print_r ( $value );
echo "</pre>";
}
?>
最佳答案
一般来说,Ajax 用于对数据进行异步操作。您单击页面上的某些内容,数据将被发送到其他地方进行操作,并且该操作的结果将作为响应返回。然后,您可以根据该响应采取行动。
在你的例子中,假设你想删除一些客户端。例如,您可以对 clientDataEdit.php 执行 ajax 调用,并告诉它删除具有特定 ID 的学生。
$.post( "clientDataEdit.php", { function: "Delete", id: "#someID" } );
然后在您的 php 中检查正在调用的函数(在本例中为删除)并执行必要的操作
if(isset($_POST['function'])){
if(($_POST['function'])=="Delete"){
//perform the manipulation and respond
echo "OK";
}
}
然后回到客户端页面,您可以捕获响应并对其采取行动:
$.post( "clientDataEdit.php", { function: "Delete", id: "#someID" })
.done(function( data ) {
alert( "Execution status: " + data );
});
这应该会给你一个警告“执行状态:OK”。如果一切都好的话。您应该用必要的本地操作替换该警报(例如隐藏表单、转发到另一个页面、加载另一个表单,无论实际情况如何)。
关于javascript - Ajax新手学习(PHP JQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33958127/
我是 Xcode 4.4 和 AppleScriptObjC 世界的新手。我正在尝试扩展和试验 Sanderson 和 Rosenthal 所著的“学习 AppleScript”一书中关于 Apple
我完全迷失在 shell 编程中,主要是因为我使用的每个站点都提供不同的工具来进行模式匹配。所以我的问题是使用什么工具在管道流中进行简单的模式匹配。 上下文:我有named.conf 文件,我需要一个
我对 C 很陌生,我一直在尝试用这种数据结构制作一个程序: struct node { char command[100]; char prereq[100][80]; cha
该程序检查用户输入的数字是否为素数。 我的问题在if语句中。由于某些原因,Boolean永远不会切换。如果数字为质数,则只会给出两个结果。 我想念什么? import java.util.Scanne
我只是在学习 Haskell。我认为这会产生一个阶乘函数...... (在 ghci 内) Prelude> let ft 0 = 1 Prelude> let ft n = n * ft (n -
这个问题已经有答案了: Using bitwise OR 0 to floor a number (7 个回答) 已关闭 6 年前。 我试图在 JavaScript 中使用二分搜索来查找数组元素,并且
使用 Signal R,如果尝试发送对象,传递模型的语法是什么? private async void FormLoaded(object sender, RoutedEventArgs e) {
我需要使用 Javascript 生成一个半金字塔数字系列,其中包含输入的起始数字和 html 页面中的行数,并在 html 页面中显示结果。我已经完成了 Java 脚本编写之类的工作。我不明白的是它
为什么函数名重复 示例: lucky :: (Integral a) => a -> String lucky 7 = "LUCKY NUMBER SEVEN!" lucky x = "Sorry
我花了2天的时间在GGTS中使用grails进行Web开发。我正在跟着一本书。本书使用命令行。到目前为止,这很棒,但是现在这本书正在使用webtest。我已经在命令行上安装了webtest,但是如何在
我正在学习 Clojure,到目前为止我无法理解这个小难题,我确信这是非常基本的。 我有这个文件: (ns cloapp.core (:gen-class)) (defn -main "I d
我在获取图像以显示在我的 J Frame 中时遇到问题。我确信我将文件放在正确的位置并且输入了正确的名称。这是代码 import java.awt.Color; import java.awt.Gra
我正在尝试为我正在做的应用程序创建一个登录窗口。我整天都在寻找一个例子,但我似乎找不到任何有帮助的东西。我的基本结构如下: // App.scala object App extends Simple
坦率地说,我是 Java 新手。我正在开发一个项目,我想找到一种基于数字序列创建多项式函数的方法。 无论如何,我的问题是我创建了一个存储序列的数组。我现在想找出元素之间的差异。例如。我想找到这个计算a
现在添加了 xml 和 logcat,现在自定义 View 代码,不幸的是我远离开发计算机所以我无法检查你的建议,@jems,我的自定义 View 的构造函数可能错误?@Falmarri,我认为构建目
我在这里缺少什么?当我单击“h2 a”链接时,.content ol 应该切换。我不明白为什么它不起作用:( $(document).ready(function(){ $(".content ol
我是 Java 新手,我到处寻找,但我没有得到一个简单的概念。 我将两个变量声明为 int。我希望这两个变量对于所有方法都是全局的。在我的第一个方法中,我想从用户输入中获取第一个变量的值。然后我希望第
我正在抓取 IMDB 页面的数据,但当尝试将其写入 CSV 文件时,我只从结果中获取最后一行。 代码下方: from urllib.request import urlopen as uReq fro
自从我学习 C 语言以来,我决定制作一个简单的程序,用于加、减和计算两个变量的乘积。根据用户的输入是1,2还是3来选择加/减/折叠。 #include int main (void) { in
int main(void) { string n = GetString(); if(n!=NULL){ for(int i=0, j=strlen(n); i
我是一名优秀的程序员,十分优秀!