Ajax从JS到PHP(到execsql请求),然后从PHP到JS
我正在使用Ajax从JS到PHP(到execsql请求),然后从PHP到JS,php,jquery,ajax,post,get,Php,Jquery,Ajax,Post,Get,我正在使用$.ajax方法将数据从JS文件传递到PHP文件“requetes.PHP”。这个PHP文件根据JS文件中的变量执行SQL请求 我的Javascript: $.ajax({ url: 'requetes.php', type: 'POST', data: { datepicker: formattedDate }, success: function(data) { $("#sql-results").text(data);
$.ajax
方法将数据从JS文件传递到PHP文件“requetes.PHP”。这个PHP文件根据JS文件中的变量执行SQL请求
我的Javascript:
$.ajax({
url: 'requetes.php',
type: 'POST',
data: {
datepicker: formattedDate
},
success: function(data) {
$("#sql-results").text(data);
},
error: function(xhr) {
console.log("echec de l'ajax !");
}
})
在我的PHP文件中:
$rq_datepicker = "
SELECT *
FROM partie
WHERE date = '"$_POST['datepicker']"'";
$query = mysqli_query($connect, $rq_datepicker);
while ($result = mysqli_fetch_array($query)) {
echo "Il y a ".$result['Reussie']." partie(s)";
echo "Il y a ".$result['Perdue']." partie(s);"
}
我已经减少了代码,因此更容易解释,但这非常有效。
我可以从JS到PHP获取“datepicker”变量,以便根据该变量执行SQL请求。
以及行$(#sql results”).text(数据)代码>从我的PHP文件返回我的2个回音
我的问题是:
我只想从我的JS文件中访问这两个变量$result['reusie']
&$result['Perdue']
我尝试过很多方法,比如使用$.ajax和方法GET,或者$.GET,但是没有成功 首先,您的代码容易受到SQL注入的攻击,您必须使用进行查询构建
另一件事是,您只需创建一个具有键值对的数组,然后使用json编码返回该数组
示例:echo json_encode(数组('foo'=>'bar')代码>
然后在ajax的js代码中,使用var foo_result=JSON.parse(data['foo'])解析data
代码>现在您可以访问所需的变量
如果您达到了要求,请告诉我。试试这个:
$.ajax({
url: 'requetes.php',
type: 'POST',
data: {
datepicker: formattedDate
},
success: function(data) {
$("#sql-results").html(data);
},
error: function(xhr) {
console.log("echec de l'ajax !");
}
});
$datepick = strip_tags($_POST['datepicker']);
$rq_datepicker = "
SELECT *
FROM partie
WHERE date = '$datepick'";
$query = $connet->query($rq_datepicker);
while ($result = $query->fetch_assoc()) {
echo "Il y a ".$result['Reussie']." partie(s)";
echo "Il y a ".$result['Perdue']." partie(s);"
}
}
您必须以可以在JS中访问数据的方式构造PHP响应。
要做到这一点,通常使用JSON,这样就可以提供已经处理过的数据,并且只需在JS中本地访问它们
在本例中,您有两个要访问的变量。但我猜您也希望将它们格式化为您在jQuery中选择的某个对象
要实现这一点,有两种方法
第一个-在PHP中完成所有的处理,并使变量可用
PHP方面:
$rq_datepicker = "
SELECT *
FROM partie
WHERE date = '"$_POST['datepicker']"'";
$query = mysqli_query($connect, $rq_datepicker);
while ($result = mysqli_fetch_array($query)) {
$response['dataRaw'] = array('Reussie' => $result['Reussie'],
'Perdue' => $result['Perdue']);
$response['dataProcessed'] = array('Reussie' => "Il y a ".$result['Reussie']." partie(s)",
'Perdue' => "Il y a ".$result['Perdue']." partie(s)");
}
}
echo json_encode($response); // <-- using this will encode the variable according to the json specifics
$rq_datepicker = "
SELECT *
FROM partie
WHERE date = '"$_POST['datepicker']"'";
$query = mysqli_query($connect, $rq_datepicker);
while ($result = mysqli_fetch_array($query)) {
$response['data'] = array('Reussie' => $result['Reussie'],
'Perdue' => $result['Perdue']);
}
}
echo json_encode($response); // <-- using this will encode the variable according to the json specifics
第二个-PHP只是将变量传递给JS,然后在本地构建字符串
PHP方面:
$rq_datepicker = "
SELECT *
FROM partie
WHERE date = '"$_POST['datepicker']"'";
$query = mysqli_query($connect, $rq_datepicker);
while ($result = mysqli_fetch_array($query)) {
$response['dataRaw'] = array('Reussie' => $result['Reussie'],
'Perdue' => $result['Perdue']);
$response['dataProcessed'] = array('Reussie' => "Il y a ".$result['Reussie']." partie(s)",
'Perdue' => "Il y a ".$result['Perdue']." partie(s)");
}
}
echo json_encode($response); // <-- using this will encode the variable according to the json specifics
$rq_datepicker = "
SELECT *
FROM partie
WHERE date = '"$_POST['datepicker']"'";
$query = mysqli_query($connect, $rq_datepicker);
while ($result = mysqli_fetch_array($query)) {
$response['data'] = array('Reussie' => $result['Reussie'],
'Perdue' => $result['Perdue']);
}
}
echo json_encode($response); // <-- using this will encode the variable according to the json specifics
一些额外的:
仅使用带有回音的json_编码作为输出,而不声明响应类型,通常会将响应类型设置为“application/json”
为了避免这种“通常”,并确保响应的内容类型部分是“application/json”(如果是这种情况),您还应该设置响应的头
header("Content-type:application/json")
进一步阅读标题:
关于json_编码,请在此处阅读更多信息:Yey guyys它可以工作!谢谢!所以我使用了这个解决方案:
在我的PHP文件中:
$response['data'] = array('Reussie' => $result['Reussie'], 'Perdue' => $result['Perdue']);
echo json_encode($response);
在我的JS文件中:
var response = JSON.parse(data);
var stringReussie = "Il y a "+response.data.Reussie+" partie(s)";
var stringPerdue = "Il y a "+response.data.Perdue+" partie(s)";
$("#sql-results").text(stringReussie+stringPerdue);
我只是不明白为什么我不能把标题放进去。看起来它“转换”了我所有的index.php文件。但它仍然有效,所以。。。我想没关系
你真棒 如果您想分别访问这两个PHP值,我建议您从PHP返回JSON,而不是从PHP返回JSON格式的响应,然后在js端随意使用
var response = JSON.parse(data);
var stringReussie = "Il y a "+response.data.Reussie+" partie(s)";
var stringPerdue = "Il y a "+response.data.Perdue+" partie(s)";
$("#sql-results").text(stringReussie+stringPerdue);