jQuery AJAX:关于如何将变量传递给AJAX GET请求的说明

时间:2017-05-29 20:09:25

标签: php jquery ajax

我正在查看一些关于实现jQuery ajax方法的Stack Overflow线程:

How to pass parameters in GET requests with jQuery

虽然这个帖子提供了一些非常好的信息,但我正在寻找澄清这是否真的会做我认为会做的事情。

我在jQuery点击功能中有ajax GET请求:

//click an image
$(".img_div").click(function() {

    //get integer stored in element attribute and put it in variable
    var altCheck = $(this).find('.modal_img').attr('alt');

    //get MySQL data
    $.ajax({
        url: "get.php",
        type: "get"
        data: { 
        ajaxid: altCheck //variable from above - is this correct? 
        }
        ....
        ....
    });

get.php 中,我希望变量的使用方式如下:

$sql = "SELECT * FROM table WHERE screeningId = $ajaxid";

基本上,我想通过将变量传递给AJAX请求来修改我的SQL语句,但我不确定这是否就是这样做的。

4 个答案:

答案 0 :(得分:2)

在您的javascript中使用此

$ajaxid = $_POST['ajaxid'];
$sql = "SELECT * FROM table WHERE screeningId = $ajaxid";

并在你的get.php中使用

{{1}}

答案 1 :(得分:1)

就像我之前在评论中提到的那样。此时代码不安全。回答你原来的问题。是的,您可以使用ajax调用中的data属性传递值。

引用:arkash anjum的回答

[Setup]
PrivilegesRequired=lowest

并像这样获取get.php中的值

 $.ajax({ url: 'get.php',
         data: {'ajaxid':altCheck},
         type: 'post',
         dataType:'json'
        });

但这意味着您正在打开注射攻击的应用程序

解决的一种方法是清理js属性。但这仍然不是一个万无一失的解决方案。您必须使用的是sql查询中的预准备语句,并使用该语句分配ajax值,然后执行该语句。明智的做法是使用清洁剂和预处理语句,以避免xss攻击和SQL注入攻击

$ajaxid = $_POST['ajaxid'];
$sql = "SELECT * FROM table WHERE screeningId = $ajaxid";

注意:我不知道php所以我可能错误的一些语法。

参考准备好的陈述 http://php.net/manual/en/pdo.prepared-statements.php

答案 2 :(得分:1)

在URL传递中给出斜杠,如下所示,

url: "get.php/" + altCheck;

并在get.php文件中访问$ _GET ['altCheck']

请记住,在GET方法中,我们需要在URL中传递数据。

快乐的编码!

答案 3 :(得分:1)

这是一些样板..(我正在使用你的代码。)

注意:在为ajax请求批量发送数据时,您应该使用POST方法,但正如您所提到的,您希望使用get发布数据我使用了Get其他您可以将类型更改为Post

快速链接: for ajax http://api.jquery.com/jquery.ajax/

使用PDOS https://www.w3schools.com/php/php_mysql_prepared_statements.asp

在js:

$(".img_div").click(function(){    

    //get integer stored in element attribute and put it in variable
    var altCheck = $(this).find('.modal_img').attr('alt');

   // lets send data.
    $.ajax({
        url: "get.php",
        type: "get",
        datatype : "json", 
        data:{ ajaxid: altCheck } //this is valid to use as you already have variable of name altCheck in case of string it should be in double quotes. 
        },
    success : function(data) // this will be called if ajax succeeds and data will hold the ref to your returned data if any.
    {
          // do whatever with data.
    }, error : function(data) // error handler if any error occurs (failed ajax)
    {
         // do handle error here.
    }
});
PHP中的

$value = filter_var($_REQUEST["ajaxid"], FILTER_SANITIZE_STRING); // used REQUEST So get/post request wont matter.
$value = mysqli_real_escape_string($value);

$stmt = $conn->prepare("select from table where id = ?");
$stmt->bind_param("s",$value);