0

私はjavascript、jquery、ajaxの初心者です。コードが機能しないという問題があります。私のコードと私の仕事の説明を以下に説明します。誰か助けてください。

hotjobs.php ファイルと hotjobsoutput.js ファイルと api.php ファイルがあります。hotjobs.php ファイルでは、私のコードは次のようになります。

Hotjobs.php:

<?php                                           
$sql=mysql_query("select * from hotjob"); 
$count=mysql_num_rows($sql); if($count>0){ while
($result=mysql_fetch_array($sql)){?><tr><td><?php echo 
$result['job_title'];?></td></tr><?php }}?>

ここで、ajax jquery を使用して job_title 名、つまり $result['job_title'] をクリックしたときに、データベースから行データを取得したいと考えています。そのためには、$result ['job_title'] の特定の ID を ajax jquery ソースに渡す必要があります。コード (hotjoboutput.js) を変更して、id を ajax url パラメータとして api.php ファイルに渡すことができるようにします。

そして私のapi.phpファイルには以下が含まれています:

<?php 
include("config.php");
$jobid=$_GET['jobid'];
$sql=mysql_query("select * from hotjobs where job_id='$jobid'");
$count=mysql_num_rows($sql);
if($count==1){
$result=mysql_fetch_array($sql);
 }
 echo json_encode($result);
?>

私の hotjoboutput.js には以下が含まれます:

    $function getrecord(id){
var jobid=id;
$.ajax({
       url:'api.php?',
       data:"jobid="+jobid,
       dataType:'json',
       success:function(data)
       {
           var jobtitle=data[1];
           var refrence_no=data[2];
           var company=data[3];
           var country=data[4];
           var salary=data[5];
           var salaryincurrency=data[6];
           var dutyhours=data[7];
           var food=data[8];
           var accomodation=data[9];
           var medical=data[10];
           var overtime=data[11];
           var period=data[12];
           var leavedays=data[13];
           var joiningairticket=data[14];
           var returnairticket=data[15];
           var nofvaccancy=data[16];
           var note=data[17]; 
$("#hotjoboutput").html("<p>vaccancy for "+jobtitle+"</p><table border=1px cellpadding=2px><tr><td>Refrence_no</td>td>"+Refrence_no+"</td></tr>
<tr><td>Company</td><td>"+company+"</td></tr>
<tr><td>Country</td><td>"+country+"</td></tr>
<tr><td>Salary</td><td>"+salary+"</td></tr>
<tr><td>Salary in Currency</td><td>"+salaryincurrency+"</td></tr>
<tr><td>Duty </td><td>"+dutyhours+"</td></tr>
<tr colspan=2>Terms and conditions</tr>
<tr><td>Food</td><td>"+food+"</td></tr>
<tr><td>Accomodation</td><td>"+accomodation+"</td></tr>
<tr><td>Medical</td><td>"+medical+"</td></tr>
<tr><td>Overtime</td><td>"+overtime+"</td></tr>
<tr><td>Period of contract</td><td>"+period+"</td></tr>
<tr><td>Leave</td><td>"+leavedays+"</td></tr>
<tr><td>Joining Air Ticket</td><td>"+joiningairticket+"</td></tr>
<tr><td>Return Air Ticket</td><td>"+returnairticket+"</td></tr>
<tr><td>No of vaccancy</td><td>"+nofvaccancy+"</td></tr>
<tr><td>Note</td><td>"+note+"</td></tr>
</table>");
}
});

});

どういうわけか私の質問がはっきりしていることを願っています。誰かこの男を助けてください!

4

1 に答える 1

0

最も簡単な方法は、ID をインライン クリック イベントにスローすることです。

<tr><td><a href="javascript:void(0);" onclick="getrecord(<?php echo (int)$result['job_id']; ?>)"><?php echo htmlspecialchars($result['job_title']);?></a></td></tr>

または、ID をdata-id属性に入れて、jQuery で取得することもできます。

<tr><td><a class="job-title" href="javascript:void(0);" data-id="<?php echo (int)$result['job_id']; ?>"><?php echo htmlspecialchars($result['job_title']);?></a></td></tr>

Javascript:

$(document).ready(function(){
    $('.job-title').click(function(){
        getrecord($(this).data('id'));
    });
});

補足:mysql_*は推奨されておらず、SQL インジェクションの脆弱性があります。MySQLi または PDO プリペアド ステートメントに切り替えます。

簡単な修正は次のとおりです。

$jobid = (int)$_GET['jobid'];

htmlspecialchars()XSSを防ぐためにも追加しました。

于 2012-12-19T07:40:42.843 に答える