gpt4 book ai didi

php - Ajax响应重复循环两次以显示数据

转载 作者:行者123 更新时间:2023-12-01 05:41:50 25 4
gpt4 key购买 nike

下面是我的 ajax:它显示从 php 脚本从数据库获取的数据。我在 php 页面中 var_dump 结果来查看数组大小。它表示数组大小(11)。

但是当传递到ajax页面时,它会两次返回11数据。我使用 console.log($data.length) 来查看返回的数据集的数量。但它显示 11 两次。在我下面的代码中,什么使循环显示两次?

$("form").on("submit", function () {
var data = {
"action": "test"
};

data = $(this).serialize() + "&" + $.param(data);
$.ajax({
type: "POST",
dataType: "json",
url: "ajax2.php",
data: data,

success: function (data) {

getData=data;
$("#main_content").slideUp("normal",function(){
$(".the-return").show();
if(data!=""){
console.log(data.length);
for (i = 0; i < data.length; i++) {
$(".the-return").append("<div class='inside_return'><section class='row'><div class='small-12 medium-6 large-10 large-centered columns d_result'><div class='text-center post_id'>" + data[i].id +"</div><div class='small-12 medium-12 large-9 columns subject'>"+ data[i].subject+" Instructor</div><div class='small-12 meidum-12 large-3 columns rate'>" + data[i].rate +"</div><span class='hourly'>hourly</span><div class='small-12 medium-12 large-12 text-center name'>" + data[i].name +"</div><div class='small-12 medium-12 large-4 columns plusneg'><img src='img/happy.png'>" + data[i].plus+"<br/><img src='img/sad.png'>"+ data[i].neg+"</div><div class='small-12 medium-12 large-4 columns gender text-center'>Male<br/>Availabiliy:<br/>Mornings:" + data[i].weekM+"<br/>Afternoons:<br/>"+ data[i].endA+"Evening:"+ data[i].weekE+"</div><div class='small-12 medium-12 large-4 columns score text-center'><h6>Reputation score</h6>"+ data[i].reputation+"</div><div class='row'><div class='small-12 medium-12 large-5 columns shortlist text-center'>Add to Shorlist</div><div class='small-12 medium-12 large-5 columns gettutor text-center'>Get Tutor</div></div><div class='small-12 medium-12 large-12 columns text-center date'>Posted on:<span class='elec'>15 Apr 2015</span></div></div></section></div>");

//alert(data[i].name)
}
}else{
$(".the-return").hide();
$(".the-return-fail").slideDown(1000);
}

});//closes #main_content
}


});
return false;


});

PHP 脚本

<?php
if (is_ajax()) {
if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exists
$action = $_POST["action"];
switch($action) { //Switch case for value of action
case "test": test_function(); break;
}
}
}

//Function to check if the request is an AJAX request
function is_ajax() {
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}

function test_function(){
$return = $_POST;
//$return='{"sub":{"1":"","2":""},"postcode":"56000","slider1":"100","action":"test"}';



$return["json"] = json_encode($return);
// echo json_encode($return);
$data = json_decode($return["json"], true);
//var_dump($data);

include('inc/config.php');



$postcode=$data['postcode'];


$rate=$data['slider1'];

$key =array_keys($data['sub']);
//print_r($key);
$pricing2 = $data['slider1'];
$pricing = $pricing2 * 1.90;
$postcode = $data['postcode'];


$bindings = array();
$bindings[] = array(":pricing", $pricing, PDO::PARAM_STR);
$bindings[] = array(":postcode", $postcode, PDO::PARAM_STR);

$key_placeholders = array();
foreach($key as $k => $v) {
$placeholder = ":subid".$k;
$bindings[] = array($placeholder, $v, PDO::PARAM_INT);
$key_placeholders[] = $placeholder;
}

$sql = "SELECT * FROM posts,subjects "
. "WHERE posts.subid IN (". implode(",",$key_placeholders).") "
. "AND posts.pricing <=:pricing "
. "AND posts.Poscode=:postcode "
. "AND posts.subid=subjects.subid "
. "ORDER BY posts.Poscode "
. "DESC LIMIT 60";

$statement = $pdo->prepare($sql);
foreach($bindings as $b) {
$statement->bindValue($b[0],$b[1],$b[2]);
}
$statement->execute();
$json = array();
while( $row = $statement->fetch()) {
array_push($json, array("name" => $row['Name'], "id" => $row['PostUUID'],"rate" => $row['pricing'],"postcode" => $row['Poscode'],"subject" => $row['subname'],"reputation" => $row['Reputation'],"plus" => $row['ReviewPlus'],"neg" => $row['ReviewNeg'],"weekM" => $row['week_morning'],"weekA" => $row['week_afternoon'],"weekE" => $row['week_evening'],"endM" => $row['weekend_morning'],"endA" => $row['weekend_afternoon'],"endE" => $row['weekend_evening'],"postDate" => $row['date']));
}
header('Content-Type: application/json');
echo json_encode($json);
//var_dump($json);
}

?>

最佳答案

我在提交表单后添加了这一行,以避免重复提交。

$('form').submit(function(){
**$(this).find(':submit').attr('disabled','disabled');**
});

关于php - Ajax响应重复循环两次以显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30275272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com