【发布时间】:2015-04-03 19:01:31
【问题描述】:
我正在编写一个脚本,该脚本从一个表中复制行 ID,并在页面上创建一个新表,其中包含已通过复选框选择的所有行,以便创建所选结果的比较表,我遇到了我的两个 ajax 调用之间的协同问题。
当在原始表中创建以下行时,分配给该行的 <a> 元素的类会触发一个 ajax 调用,然后填充一个显示在页面上的带有附加信息的模式。
这条线
echo "<td><a id='$id' data-toggle='modal' href='#provmodal' class='push'>".$results['provider_name']."</a>";
当以这种方式触发模式时,信息填充得很好。
现在,在填充新表的脚本中,我调用了另一个单独的脚本,该脚本重新查询选定的行 ID 并设置 html。
这是脚本的那部分:
$('.compareCheck:checked').each(function(){
var ele_id = $(this).attr('id');
$.ajax({
type : 'post',
url : 'compare.php', //query
data : 'post_id='+ ele_id, // passing id via ajax
dataType: "json",
success : function(data){
var row = "<tr class='removeRow'>";
row += "<td>" + data.provider_num + "</td>";
//HERE IS WHERE THE RE-CREATION OF THE MODAL CALL GOES \/
row += "<td><a id='" + ele_id + "' data-toggle='modal' href='#provmodal' class='push'>" + data.provider_name + "</a></td>";
row += "<td style='text-align:right;'>$" + formatNumber(data['233_net_charity_care']) + "</td>";
row += "<td style='text-align:right;'>$" + formatNumber(data['291_cost_of_non_mcr_bad_debts']) + "</td>";
row += "<td style='text-align:right;'>$" + formatNumber(data['301_cost_of_uncomp_care']) + "</td>";
row += "<td style='text-align:right;'>" + ((data['233_net_charity_care']/data['301_cost_of_uncomp_care'])*100).toFixed(1) + "%</td>";
row += "<td style='text-align:right;'>" + ((data['291_cost_of_non_mcr_bad_debts']/data['301_cost_of_uncomp_care'])*100).toFixed(1) + "%</td>";
row += "</tr>";
$("#compareTable > tbody").append(row);
}
});
});
正如您在我当前的实现中看到的那样,我正在使用ele_id var,但我也尝试过data.id 和data['id'] 之类的东西。所有这些都会触发模态但不会从 php 脚本中产生任何结果。
这是我的两个 php 脚本:
脚本 A:填充模态 - (modalquery.php)
<?php
require_once("link_costreport_2013.php");
$id = $_POST['post_id'];
$modalquery = $link->prepare("SELECT * FROM s10 WHERE id = :id");
$modalquery->bindParam(':id', $id, PDO::PARAM_INT);
$modalquery->execute();
$modalresults = $modalquery->fetch();
print_r("<h4>State: ".$modalresults['state']."</h4>");
print_r("<h4>City: ".$modalresults['city']."</h4>");
print_r("<h4>Street: ".$modalresults['street']."</h4>");
print_r("<h4>Zip: ".$modalresults['zip']."</h4>");
print_r("<h4>County: ".$modalresults['county']."</h4>");
?>
和脚本 B - 将重新查询转换为新比较表 (compare.php) 的值的脚本
<?php
include_once('functions.php');
include_once('link_costreport_2013.php');
if(isset($_POST['post_id'])){
$id = $_POST['post_id'];
}
$query = $link->prepare("SELECT *
FROM `s10`
WHERE `id` = :id");
$query->bindParam(':id', $id, PDO::PARAM_INT);
$query->execute();
$results = $query->fetch(PDO::FETCH_ASSOC);
echo json_encode($results);
?>
如果有帮助,这里是我的脚本,用于将 .push 类转换为返回模态内容的 ajax 调用的触发器。
$(function(){
$('.push').click(function(){
var ele_id = $(this).attr('id');
$.ajax({
type : 'post',
url : 'modalquery.php', // in here you should put your query
data : 'post_id='+ ele_id, // here you pass your id via ajax .
// in php you should use $_POST['post_id'] to get this value
success : function(r)
{
// now you can show output in your modal
$("#provmodal .modal-body").html(r).promise().done(function(){
$("#provmodal").modal('show');
});
}
});
});
});
我不熟悉以这种方式使用 ajax 和 jquery,所以任何见解都会非常好。
提前致谢
:EDIT: 这是 ID = 1 时json_encode($results) 的输出
{"id":"1","report_record_num":"548598","provider_num":"381301","provider_name":"COTTAGE GROVE COMMUNITY HOSPITAL","street":"1515 VILLAGE DRIVE","city":"COTTAGE GROVE","county":"LANE","state":"OR","zip":"97424-9700","cbsa":"21660","urban_or_rural":"Rural","ownership_type":"Voluntary, Nonprofit, Church","divider":"","divider2":"","1_cost_to_charge_ratio":"0.703459","2_net_rev_from_mcd":"3920096","3_recieve_sup_mcd_payments":"Y","4_include_if_yes":"N","5_dsh_or_sup_payments":"84890","6_medicaid_charges":"6192717","7_medicaid_cost":"4356323","8_dif_net_rev_and_cost":"351337","9_schip_net_rev":"0","10_stnd_alone_schip_charges":"0","11_stnd_alone_schip_cost":"0","12_diff_schip_rev_and_cost":"0","13_net_rev_from_state_local":"0","14_charge_under_state_law":"0","15_state_local_program_cost":"0","16_dif_between_net_rev_and_cost":"0","17_private_grants_and_donations":"6886","18_gov_grants":"0","19_tot_unreim_cost_mcd_schip_gov":"351337","201_tot_init_charity_for_uninsured":"593922","202_tot_init_charity_for_insured":"1072203","203_tot_init_charity_all":"1666125","211_cost_of_init_charity":"417800","212_cost_of_init_charity":"754251","213_cost_of_init_charity":"1172051","221_partial_pmt_charity_pat":"4385","222_partial_pmt_charity_pat":"8868","223_partial_pmt_charity_pat":"13253","231_net_charity_care":"413415","232_net_charity_care":"745383","233_net_charity_care":"1158798","241_charges_beyond_los_inc":"N","251_charges_beyond_los_lim":"0","261_total_bed_debts":"0","271_medicare_bad_debts":"79275","281_non_medicare_bad_debts":"-79275","291_cost_of_non_mcr_bad_debts":"-55767","301_cost_of_uncomp_care":"1103031","311_cost_of_unreim_and_uncomp":"1454368"}
:EDIT2: 好的,所以我回去拍了一些正在发生的事情的照片。不知何故,我的模态文本没有出现在第二个表 <a class="push"> 元素中。图片如下:
!(http://imgur.com/xgsOzSy) - 这是在第一个表中 !(http://imgur.com/uSsI3DM) - 这是第二次按下相同链接时发生的情况。我相信它不会触发 ajax .push 调用。
【问题讨论】:
-
您能向我们展示您从初始脚本中返回的 JSON 吗?
-
@jonmrich 好的,我认为这就是您要寻找的:它在我的原始帖子中
-
好的...我已经重读了很多次你的问题,但我仍然不太确定问题出在哪里。您正在返回有效的 JSON,并且似乎可以很好地解析它。什么不完全有效?
-
@jonmrich 我已经用正在发生的事情的图像编辑了原始帖子。
-
“这是第二次按下同一个链接时发生的事情”哪个链接。我没有关注触发第一张图片和触发第二张图片的内容。
标签: javascript php jquery mysql ajax