2016-10-03 49 views
6

enter image description hereJobId ve görünümüne değerleri nasıl gönderebilirim? Ajax

budur ben ajax ile sayfa kontrolöre iş değerini almak zorundadır görünüm Ayrıntılar düğmesini tıklayın ve orada ben iş bilgi çeken zaman veri tabanı r_job tablodan .. gelen getirilirken LOTAL listeleme ve sorumlu olarak iş ile ilgili tablo feillds göndermek zorunda ve bu sayfada görüntülemek zorunda.

Bu benim Dinamik İlanı geçerli:

$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> 

Ve bu benim ajax ve jquery Çağrı geçerli: Benim Kontrolör Sayfa

$("#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; 
    }); 

Son olarak:

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; 
    } 

Bulunduğum konu detaylarını görüntülemek istediğimde sadece detaylara bakıyorum düğmesi çalışma, yanıtınızda hiç bir sorun kalmadı

cevap

2

Not, sayfa başına tek bir kimlik bulunmalıdır. tek yapmanız gereken bir js fonksiyonu oluşturmak ve butona tıklandığında çağırmak ve JobId'i parametre olarak göndermek. Loop olduğunda iyi çalışıyor.

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']); 

} 
1

Kodunuzda bir görünüm sorununuz var.

1. kimlikleri sadece

HTML kimlikleri benzersiz ve sadece bir sayfada kez kullanılabilecek bir HTML sayfasına bir kez kullanılabilir. Bu ilk tasarım hatası, bir PHP döngüsünde html oluşturuyorsanız, ids yerine sınıfları kullanmanız gerekir. ajax tarafından gönderilen

2. id Eğer $('#JobId').html() bağımsız ilk #JobId 'ın html dönüyor çünkü şu anda her zaman kontrolöre aynı id gönderiyor

tıklayın yere bağlıdır gerekiyor. Kullanıcınızın kimliğinizi ayırt edebilmeniz için hangi düğmeyi tıkladığını bulmanız gerekir.

1. adım - bir defadan fazla işlenen tüm öğeler için html'nizdeki sınıflara göre kimliği değiştirin. sizin ajax isteğinde -

<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. adım: aslında tarafından tıklandığı düğmesi öğrenmek ben de düğmeye bir data-id niteliği eklendi, çok basit bu şekilde düğmenin tıklandığı öğrenmek için kullanıcı - burada veri özelliğini kullanıyorum:

// ... 
data: {'action':'viewjob','JobId' : $(this).data('id')}, 
// ... 

açıklama: jquery $(this) daima etkinliği tetikleyen güncel elemana bahsediyor. Sizin durumunuzda, düğmeniz tarafından tetiklenen tıklama etkinliğidir - bu nedenle, $(this).data('id') düğmenizin html kodundaki "id" veri özniteliğini okuyor.