我如何发送 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 视图

Django + 阿贾克斯

重新附加时片段创建/恢复重复视图

重新加载uitableview后滚动表格视图

如何在不使用 Java 的情况下压缩 .csv 文件并在电子邮件中附加 Oracle plsql

如何在我的 C++ 代码中创建 QML 画布并在其上附加视频?比如Java Canvas我可以