我如何发送 JobId 并在视图上附加值。阿贾克斯
Posted
技术标签:
【中文标题】我如何发送 JobId 并在视图上附加值。阿贾克斯【英文标题】:How can i send JobId and append values on view. Ajax 【发布时间】:2017-02-11 09:51:35 【问题描述】:这是从数据库 r_job 表中获取的批量列表。 当我单击查看详细信息按钮时,它必须通过 ajax 将作业值带到控制器页面,在那里我将获取作业信息,并且作为响应,我必须发送与作业相关的表字段并且必须在此页面上显示。
这是我的动态列表:
$Jobquery = $conn->query("SELECT * FROM r_job ");
while($JobResults = $Jobquery->fetch_assoc())
<tr>
<td id="hiringevent"><?php echo $JobResults['hiringevent']; ?></td>
<td id="JobId"><?php echo $JobResults['id_job']; ?></td>
<td><button id="ViewDetails" class="btn btn-primary text-center">View Details</button></td>
</tr>
这是我的 ajax 和 jquery 调用:
$("#ViewDetails").click(function()
$.ajax(
url: "job-controller.php",
method: "POST",
data: 'action':'viewjob','JobId' : + $('#JobId').html(),
dataType: "json",
success: function (response)
$("#showMessage").html(response['message']);
,
error: function (request, status, error)
$("#showMessage").html("OOPS! Something Went Wrong Please Try After Sometime!");
);
return false;
);
最后是我的控制器页面:
if($_POST['action']=='viewjob')
$jobSearch= $conn->query("SELECT * From r_job WHERE id_job='".$_POST['JobId']."'") or die(mysql_error());
$ViewJob=$jobSearch->fetch_assoc();
$hiringevent = $ViewJob['hiringevent'];
$jobname = $ViewJob['jobname'];
$jobdescription = $ViewJob['jobdescription'];
$cutoff = $ViewJob['cutoff'];
$joblocation = $ViewJob['joblocation'];
$interviewlocation = $ViewJob['interviewlocation'];
$jobexperience = $ViewJob['jobexperience'];
$response['message'] = "Show Job Information";
$response['success'] = true;
else
$response['message'] = "OOPS! Something Went Wrong Please Try After Sometime!";
$response['success'] = false;
echo json_encode($response);
exit;
我当前的问题是当我单击查看详细信息时,仅首先查看详细信息 按钮工作仍然没有反应
【问题讨论】:
【参考方案1】:请注意,每页应该有一个 id。 您需要做的就是创建一个 js 函数并在单击按钮时调用它并将 JobId 作为参数发送。当您在循环中时效果很好。
HTML
$Jobquery = $conn->query("SELECT * FROM r_job ");
while($JobResults = $Jobquery->fetch_assoc())
<tr>
<td id="hiringevent"><?php echo $JobResults['hiringevent']; ?></td>
<td id="JobId"><?php echo $JobResults['id_job']; ?></td>
<td><button class="btn btn-primary text-center" onClick="getDetails(<?php echo $JobResults['id_job']; ?>)">View Details</button></td>
</tr>
JS
function getDetails(jobID)
// ajax Call Here
console.log(jobID)// you can see JobID Here.
// now set the values to by using id
$("#ViewJobId").val(response['jobData']['jobId']);
/* val is used to set aswell as get the values */
/*in case of td you have to use text insted of val*/
$("#ViewJobId").text(response['jobData']['jobId']);
【讨论】:
【参考方案2】:您的代码中存在视图问题。
1. id 在一个 HTML 页面中只能使用一次
HTML-id 是唯一的,并且只能在一个页面上使用一次。这是您的第一个设计错误,如果您在 PHP 循环中生成 html,则需要使用类而不是 id。
2。 ajax 发送的 id 需要取决于您点击的位置
您目前总是向您的控制器发送相同的 id,因为 $('#JobId').html()
独立地返回第一个 #JobId
的 html。您必须找出您的用户单击了哪个按钮才能区分您的 id。
1.步骤 - 用你的 html 中的类替换 id 以用于多次呈现的所有元素。我还为您的按钮添加了data-id
属性,这样很容易找出单击了哪个按钮:
<tr>
<td class="hiringevent"><?php echo $JobResults['hiringevent']; ?></td>
<td class="JobId"><?php echo $JobResults['id_job']; ?></td>
<td><button class="ViewDetails" class="btn btn-primary text-center" data-id="<?php echo $JobResults['id_job']; ?>">View Details</button></td>
</tr>
2。步骤 - 在您的 ajax 请求中:找出用户实际点击了哪个按钮 - 我在这里使用数据属性:
// ...
data: 'action':'viewjob','JobId' : $(this).data('id'),
// ...
解释:jquery 中的$(this)
总是指触发事件的当前元素。在您的情况下,它是由您的按钮触发的点击事件 - 所以$(this).data('id')
正在读取您按钮的 html 代码中的数据属性“id”。
【讨论】:
以上是关于我如何发送 JobId 并在视图上附加值。阿贾克斯的主要内容,如果未能解决你的问题,请参考以下文章
无法将 ajax json 发布请求发送到 django 视图