2015-01-21 3 views
0

Chrome 디버거를 사용 중이며 AJAX 요청 (PHP 파일 -> 페이지)에서 JSON 피드를 올바르게 가져올 수 있습니다. 문제는 해당 피드에서 데이터를 가져 와서 아래 언급 된 표에 삽입하는 것입니다. 가장 혼란스러운 부분은이 코드가 사이트의 다른 부분에서 완벽하게 작동하지만 여기서는 작동하지 않는 것입니다.선택한 필드에 AJAX를 표시 할 수 없습니다.

JSFiddle : http://jsfiddle.net/2qc01ceL/

HTML :

<div class="form_head">Flight & Duty</div> 

<table cellpadding="4" cellspacing="0" width="100%"> 

<thead> 
<tr class="tab_head" style="color:#FFF; text-align:center"><th rowspan="2">Pilot</th><th rowspan="2">ARN</th><th colspan="2">Remaining Duty Time</th><th colspan="3">Remaining Flight Time</th></tr> 
<tr class="tab_head" style="color:#FFF; text-align:center"><th>7 Day</th><th>14 Day</th><th>7 Day</th><th>30 Day</th><th>365 Day</th></tr> 
</thead> 

<tbody> 
<tr><td id="name"></td><td id="arn"></td><td></td><td></td><td></td><td></td><td></td></tr> 
</tbody> 

</table> 

JQuery와/AJAX :

$(document).ready(function() { 

var data = function(callback) { 
    return $.ajax({ 
     type: "GET", 
     dataType: 'json', 
     url: "required/duty.php", 
     async: false, 
     success: function(doc) { 
      var duty = []; 
      $(doc).each(function() { 
       duty.push({ 
        id: $(this).attr('id'), 
        dutyarn: $(this).attr('dutyarn'), 
        dutyon: $(this).attr('dutyon'), 
        dutyoff: $(this).attr('dutyoff'), 
        dutytime: $(this).attr('dutytime'), 
        userfname: $(this).attr('userfname'), 
        userlname: $(this).attr('userlname'), 
        }); 
       }); 
       callback(duty); 
      } 
     }).responseText; 
    }; 

    document.getElementById("arn").innerHTML = duty.arn;  
}); 

PHP 파일 :

mysql_connect(
"mysql.**.com", 
"**", 
"**") or die 
("Unable to connect to SQL server"); 

mysql_select_db(
"**") or die 
("Unable to select database"); 

$json = array(); 

$get_duty = " 
SELECT * FROM heli_duty 
LEFT JOIN heli_user ON duty_arn = user_arn 
WHERE 1"; 

$run_duty = mysql_query("$get_duty") or die($sql_error .mysql_error()); 

$duty_array = array(); 

     while ($duty = mysql_fetch_assoc($run_duty, MYSQL_ASSOC)) { 

      $duty_array[] = array(
       'id' => $duty[duty_id], 
       'dutyarn' => $duty[duty_arn], 
       'dutyon' => $duty[duty_on], 
       'dutyoff' => $duty[duty_off], 
       'dutytime' => $duty[duty_time], 
       'userfname' => $duty[user_fname], 
       'userlname' => $duty[user_lname], 
      ); 
     } 
    echo json_encode($duty_array); 
+0

또한 표준으로 MySQLi를 살펴보십시오. MySQL은 더 이상 사용되지 않을 것이며 보안상의 관점에서 결함이있는 것으로 보입니다. – Martin

+0

@Martin에게 감사드립니다.하지만 상황에 따라이 프로젝트에서 MySQLi를 사용할 수 없습니다. –

+0

당신은 정교 할 수 있습니까? 내가 MySQL을 MySQLi하지만 내가 할 수없는 프로젝트의 이유를 생각하고 노력하고있어 :/ – Martin

답변

0

probleme은 당신이 당신의 JSON을 구문 분석하는 방식입니다데이터를 돔 요소처럼 구문 분석하지만 json 배열입니다! 이런 식으로 뭔가를 시도 :

$.each(doc, function(i, item) { 
    duty.push(item); 
}); 

을 여기에 바이올린 : http://jsfiddle.net/sLmotxea/1/

희망 내가 도와주세요!

+0

정확히 무슨 뜻인지 이해가 안 되니? (죄송합니다) –

+0

$ (doc) .each (의무) , dutyon : $ (this) .attr ('dutyon'), dutyoff : $ (this) .attr ('dutyoff'), 근무 시간 : $ (this) .attr ('dutytime'), userfname : $ userlname : $ (this).} – ekans

+0

이것을 시도했지만 'Uncaught ReferenceError : duty is not defined'가 표시됩니다. –

0

경고를 사용하여 테이블에 보내기 전에 duty.arn의 값을 확인할 수 있습니까?

document.getElementById("arn").innerHTML.html()과 같은 유사한 기능으로 바꾸어보십시오.

관련 문제