2024-08-19

在jQuery中,使用Ajax发送请求主要有以下四种方式:

  1. $.ajax(): 这是jQuery中Ajax最基本的方法,它提供了大量的选项来对Ajax请求进行精细的控制。



$.ajax({
    url: 'your-url',
    type: 'GET',
    dataType: 'json',
    success: function(data) {
        console.log(data);
    },
    error: function(error) {
        console.log('Error: ' + error);
    }
});
  1. $.get(): 这是一个简写的$.ajax()方法,专门用于发送GET请求。



$.get('your-url', function(data) {
    console.log(data);
}).fail(function(error) {
    console.log('Error: ' + error);
});
  1. $.post(): 这是一个简写的$.ajax()方法,专门用于发送POST请求。



$.post('your-url', {key1: 'value1', key2: 'value2'}, function(data) {
    console.log(data);
}).fail(function(error) {
    console.log('Error: ' + error);
});
  1. $.getJSON(): 这是一个简写的$.ajax()方法,专门用于发送GET请求,并期望返回JSON数据。



$.getJSON('your-url', function(data) {
    console.log(data);
}).fail(function(error) {
    console.log('Error: ' + error);
});

以上代码中,your-url是你要请求的服务器地址,data是服务器返回的数据,error是可能出现的错误信息。每个方法都返回一个jqXHR对象,它可以用来处理异步请求的状态。

2024-08-18

在Flask后端,你可以使用request.get_json()方法来获取通过jQuery AJAX传递的JSON数据。如果你的前端通过POST方法传递了一个多维数组,你可以这样做:




from flask import Flask, request
 
app = Flask(__name__)
 
@app.route('/receive_array', methods=['POST'])
def receive_array():
    # 获取通过jQuery AJAX传递的JSON数据
    received_array = request.get_json(force=True)
    # 假设我们有一个二维数组
    print(received_array)  # 打印接收到的数组
    return 'Success', 200
 
if __name__ == '__main__':
    app.run(debug=True)

前端的jQuery AJAX代码可能看起来像这样:




$(document).ready(function() {
    var multiDimensionalArray = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
 
    $.ajax({
        url: '/receive_array',
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify(multiDimensionalArray),
        success: function(response) {
            console.log(response);
        },
        error: function(xhr, status, error) {
            console.error(error);
        }
    });
});

确保你的前端HTML文件包含了jQuery库。

2024-08-18

以下是一个简化的jQuery Ajax实现来删除图书的例子:

HTML部分:




<ul id="books">
  <li data-id="1">书籍1</li>
  <li data-id="2">书籍2</li>
  <!-- ...更多书籍... -->
</ul>

JavaScript部分(jQuery):




$(document).ready(function() {
  $('#books').on('click', 'li', function() {
    var bookId = $(this).data('id');
    var request = $.ajax({
      url: 'delete_book.php',
      type: 'POST',
      data: { id: bookId }
    });
    
    request.done(function(response, textStatus, jqXHR) {
      if(response.status === 'success') {
        $(this).remove(); // 从列表中移除已删除的书籍
      } else {
        alert('删除失败: ' + response.message);
      }
    });
 
    request.fail(function(jqXHR, textStatus, errorThrown) {
      alert('请求失败: ' + textStatus);
    });
  });
});

PHP部分 (delete_book.php):




<?php
$response = array('status' => 'error', 'message' => '删除失败');
 
if(!empty($_POST['id'])) {
  // 假设有一个删除图书的函数deleteBook()
  if(deleteBook($_POST['id'])) {
    $response['status'] = 'success';
    $response['message'] = '删除成功';
  }
}
 
header('Content-Type: application/json');
echo json_encode($response);
?>

这个例子中,我们为每本书籍添加了一个数据属性data-id,当点击书籍时,会发送一个Ajax请求到delete_book.php,请求会携带要删除的书籍ID。服务器端的delete_book.php脚本会处理删除请求,并返回操作结果。客户端JavaScript会根据返回的状态更新页面。

2024-08-17



$(document).ready(function() {
    // 表单提交事件
    $('form').on('submit', function(e) {
        e.preventDefault(); // 阻止表单默认提交行为
 
        // 清除之前的错误提示
        $('.form-group').removeClass('has-error');
        $('.help-block').empty();
 
        // 检查用户名和密码
        var username = $('#username').val();
        var password = $('#password').val();
 
        if (username.trim() === '') {
            $('#username-group').addClass('has-error');
            $('#username-help').text('用户名不能为空');
        }
        if (password.trim() === '') {
            $('#password-group').addClass('has-error');
            $('#password-help').text('密码不能为空');
        }
 
        // 如果没有错误,则允许提交
        if ($('.form-group.has-error').length === 0) {
            $(this).off('submit').submit(); // 移除事件监听并允许提交
        }
    });
});

这段代码在表单提交时阻止默认行为,并检查用户名和密码是否为空。如果为空,则向对应的表单组添加错误类并显示错误信息;只有当没有错误时,才允许表单提交。

2024-08-17

【漏洞复现-jquery-文件上传】vulfocus/CVE-2018-9207

环境准备:

  1. Docker:确保您的机器上安装了Docker。
  2. Docker Compose:安装Docker Compose以便于运行多容器Docker应用。

步骤:

  1. 克隆vulfocus仓库:

    
    
    
    git clone https://github.com/vulfocus/vulfocus.git
  2. 进入CVE-2018-9207相关目录:

    
    
    
    cd vulfocus/CVE-2018-9207/
  3. 使用Docker Compose启动环境:

    
    
    
    docker-compose up -d
  4. 访问http://your-ip:8080,你将看到一个带有文件上传表单的网页。
  5. 使用Docker命令进入容器内部:

    
    
    
    docker exec -it cve-2018-9207_jquery_1 bash
  6. 在容器内部,你可以尝试上传恶意文件,例如一个bash脚本。
  7. 当环境不再需要时,可以使用以下命令清理环境:

    
    
    
    docker-compose down

注意:请将your-ip替换为你的实际IP地址或localhost,如果你在本地运行环境。

2024-08-17



// 引入jQuery库和jQuery.validity插件
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="path/to/jquery.validity.min.js"></script>
 
// 页面加载完成后绑定验证事件
$(document).ready(function() {
    // 为具有data-validate属性的表单元素启用验证功能
    $('input, select, textarea').validity();
 
    // 为具有特定ID的表单启用验证功能
    $('#myForm').validity();
 
    // 监听验证状态变化事件
    $(document).on('validity.js.fail', function(e, field) {
        console.log(field.element.id + ' is invalid.');
    }).on('validity.js.pass', function(e, field) {
        console.log(field.element.id + ' is valid.');
    });
});

这段代码演示了如何在页面加载完成后,使用jQuery.validity插件为特定的表单元素启用验证功能,并监听验证状态的变化。当表单字段验证失败时,它会打印一条错误信息;当验证通过时,它会打印一条成功信息。这样可以帮助开发者了解表单的验证状态,并根据需要进行相应的操作。

2024-08-17



<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>jQuery.Gantt 示例</title>
    <link rel="stylesheet" href="path/to/jquery.gantt.css"/>
    <script src="path/to/jquery.js"></script>
    <script src="path/to/jquery.gantt.js"></script>
</head>
<body>
    <div id="gantt"></div>
    <script>
        $(function() {
            "use strict";
            $("#gantt").gantt({
                source: [
                    {
                        name: "任务1",
                        desc: "任务描述",
                        values: [
                            {
                                from: "/Date(2023,0,1)/",
                                to: "/Date(2023,0,10)/",
                                label: "开发",
                                customClass: "ganttRed"
                            }
                        ]
                    }
                    // ... 可以添加更多任务
                ],
                scale: "days",
                minScale: "hours",
                maxScale: "months",
                onItemClick: function(data) {
                    console.log("点击了任务:", data.item);
                },
                onAddClick: function(dt, rowId) {
                    console.log("添加任务的点击事件:", dt, rowId);
                },
                // ... 更多配置项
            });
        });
    </script>
</body>
</html>

这个示例展示了如何在HTML页面中嵌入一个基本的Gantt图表,并配置了一个简单的任务。用户可以通过调整配置项来进一步定制图表。

2024-08-17

在jQuery DataTables中,您可以使用cell()data()方法来修改单元格的数据。以下是一个简单的例子,展示了如何修改特定单元格的数据:




// 假设您已经初始化了DataTable,并且您想要修改第二行第三列的数据
var table = $('#example').DataTable(); // 确保使用正确的表格ID
 
// 获取单元格对象
var cell = table.cell(1, 2); // 行索引从0开始,列索引从1开始
 
// 修改单元格数据
cell.data('新的数据').draw();

确保在调用cell()方法时使用正确的行和列索引。draw()方法会更新表格显示,以反映更改后的数据。

注意:如果您的表格配置了服务器模式(即serverSide选项设置为true),您需要在服务器端处理数据更新,因为客户端DataTable不会与服务器同步数据。

2024-08-17

使用jQuery的$.when()方法可以同步获取多个URL的JSON数据。以下是一个简单的示例代码:




$.when(
  $.getJSON('/url1'),
  $.getJSON('/url2'),
  $.getJSON('/url3')
).done(function(response1, response2, response3) {
  // 处理获取到的数据
  var data1 = response1[0];
  var data2 = response2[0];
  var data3 = response3[0];
  
  // 使用数据进行操作
  console.log(data1);
  console.log(data2);
  console.log(data3);
}).fail(function(error) {
  // 处理错误情况
  console.error('An error occurred:', error);
});

在这个例子中,$.getJSON被调用三次以发出三个异步请求。$.when()接收这三个请求作为参数,并在所有请求都完成时调用done回调函数。每个响应都作为参数传递给done函数,你可以通过它们的索引或者直接访问属性来处理每个响应。如果任何一个请求失败,fail回调函数会被调用。

2024-08-17



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery下拉筛选示例</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <input type="text" id="myInput" placeholder="输入名称筛选...">
    <ul id="myUL">
        <li data-value="Alice">Alice</li>
        <li data-value="Bob">Bob</li>
        <li data-value="Charlie">Charlie</li>
        <!-- 更多列表项 -->
    </ul>
 
    <script>
        $(document).ready(function(){
            $("#myInput").on("keyup", function() {
                var searchTerm = $(this).val().toLowerCase();
                $("#myUL li").each(function(){
                    var lineStr = $(this).text().toLowerCase();
                    if(lineStr.indexOf(searchTerm) == -1){
                        $(this).hide();
                    }
                    else{
                        $(this).show();
                    }
                });
            });
        });
    </script>
</body>
</html>

这段代码实现了一个简单的下拉筛选功能,用户可以在输入框中输入文本来过滤<ul>标签内的列表项。jQuery用于处理文本输入事件,并根据用户的输入显示或隐藏相应的列表项。