[英]jQuery AJAX: Clarification on How to Pass Variable into AJAX GET Request
我正在查看有关实现jQuery ajax方法的一些Stack Overflow线程:
尽管此线程提供了一些非常好的信息,但我正在寻求澄清,以了解它是否确实可以完成我认为会做的事情。
我在jQuery click函数中具有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语句,但是我不确定这是否完成。
在您的JavaScript中使用此
$.ajax({ url: 'get.php',
data: {'ajaxid':altCheck},
type: 'post',
dataType:'json'
});
并在您的get.php中使用
$ajaxid = $_POST['ajaxid'];
$sql = "SELECT * FROM table WHERE screeningId = $ajaxid";
就像我之前在评论中提到的那样。 该代码目前不安全。 回答您的原始问题。 是的,您可以在ajax调用中使用data属性传递值。
引用:arkash anjum的答案
$.ajax({ url: 'get.php',
data: {'ajaxid':altCheck},
type: 'post',
dataType:'json'
});
并像这样获取get.php中的值
$ajaxid = $_POST['ajaxid'];
$sql = "SELECT * FROM table WHERE screeningId = $ajaxid";
但这意味着您正在向应用程序开放注入攻击
解决方法之一是清理js属性。 但这仍然不是万无一失的解决方案。 您需要使用的是sql查询中的一条准备好的语句,并使用该值分配ajax值,然后执行该语句。 最好同时使用消毒剂和预处理语句,以避免xss攻击和sql注入攻击
<?php
$stmt = $dbh->prepare("SELECT * FROM table WHERE screeningId = ?");
if ($stmt->execute(array($_POST['ajaxid']))) {
while ($row = $stmt->fetch()) {
print_r($row);
}
}
?>
注意:我不了解php,所以某些语法可能不对。
参考准备好的声明http://php.net/manual/en/pdo.prepared-statements.php
在URL中通过以下方式添加斜杠,
url: "get.php/" + altCheck;
并在get.php文件中以$ _GET ['altCheck']访问
记住在GET方法中,我们需要在URL中传递数据。
编码愉快!
这是一些样板。(例如,我正在使用您的代码。)
注意 :在为ajax请求批量发送数据时,应该使用POST方法,但是正如您提到的,要使用get
来发布数据,我已经使用过Get
,您可以将类型更改为Post
快速链接:用于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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.