2013-03-24 1 views
0

나는 그 기능을 매우 잘 계단식으로 떨어 뜨렸다. 양식이 제출되면 ID는 두 번째 스크립트로 전달됩니다. 콜백 함수를 제대로 작동하지 못하는 것 같습니다. 무엇이 잘못되었는지 알지 못한다.Jquery Json이 html 테이블에 요청하여 콜백

참고 제안 된 변경 사항으로 코드를 업데이트했지만 여전히 문제가 발생합니다.

PHP는 :

<?php 
if (!empty($_GET['id'])) { 
$id = $_GET['id']; 

try { 


$objDb = new PDO('mysql:host=localhost;dbname=blankett', 'root', 'root'); 
$objDb->exec('SET CHARACTER SET utf8'); 

$sql = "SELECT * 
    FROM `forms` 
    WHERE `id` = '$id'"; 
$statement = $objDb->prepare($sql); 
$list = $statement->fetchAll(PDO::FETCH_ASSOC); 



if (!empty($list)) { 

    $out = array(); 

    foreach ($list as $row) { 
    $out[] = '<tr><td><a href="'.$row['link_form'].'">'.$row['name_form'].'</a></td> <td>'.$row['date_added'].'</td></tr>'; 
    } 

    echo json_encode(array('error' => false, 'list' => $out)); 
} else { 
    echo json_encode(array('error' => true)); 
} 


} catch(PDOException $e) { 
echo json_encode(array('error' => true)); 
} 

}else { 
echo json_encode(array('error' => true)); 
} 


?> 

JQuery와 아약스 호출.

$each(data.form, function(i, val){ 
    $('#formsubmit tbody').append(val); 
}); 

는 각 기능 내부에 out 변수가 없기 때문에, 당신은 반환의 핵심 form의 이름을 지정할 것 같습니다 :

$each(data.out, function(){ 
    var trow = out; 
    $('#formsubmit tbody').append(trow); 
}); 

으로 :

$('#blankett_form').submit(function() { 
var id = $(this).find('.update:last').val(); 
    if (id == '') { 
     alert('Välj land och region.'); //glöm inte bort att ändra beroende på land. 
    } else { 
     var table = '<table class="table table-hover table-bordered"><thead><tr><th>blanketter.</th><th>datum tillagt.</th></tr></thead><tbody></tbody></table>' 
     $('#formsubmit').empty().append(table) 
     $ajax({ 
       url: 'func/blankett_func2.php', 
       data: {'id':id}, 
       dataType: 'JSON', 
       success: function(data) 
       { 
        $.each(data.list, function(index, value){ 
        $('#formsubmit tbody').append(value); 
        }); 
       } 
      }); 
return false 
}); 
+0

스크립트가로드되지 않았으므로 여전히 문제가 있다고 생각합니다. 그 이유는 무엇일까요? – StenW

답변

1

교체 배열? 당신이 루프 내부의 배열을 재 선언하는 PHP에서

은 할 필요가 :

$out = array(); 

foreach ($list as $row) { 
    $out[] = '<tr><td><a href="'.$row['link_form'].'">'.$row['name_form'].'</a></td> <td>'.$row['date_added'].'</td></tr>'; 
} 

과) (실행 빈 배열을 전달 할 필요가 없습니다 : 당신이 arent

$statement->execute(); 
+0

당신이 옳습니다. 피곤해서 잘 모르겠지만 제대로 작동하지 않는 것 같습니다. 나는 그것이 Jquery에서 예약 된 작업이기 때문에 양식을 사용해서는 안된다 고 생각하니? – StenW

+0

어떤 생각을 어떻게 PHP를 다시 작성해야합니까? – StenW

+0

제안대로 코드를 업데이트했습니다. – StenW

1

은 데이터를 제대로 보내려면 id 키와 id 값을 보내야합니다.

data: {'id':id}, 

또한 JSON 출력은 그래서 당신은 대신 data.outdata.form를 사용할 수있는 HTML 문자열에 액세스하는 형태 {"error": false, "form": "html string"}이다. 그래서 시도해보십시오.

$.each(data.form, function(index, value){ 
    $('#formsubmit tbody').append(value); 
}); 
+0

완전히 맞습니다. 고맙습니다! 나는 그것이 제대로로드되지 않았기 때문에 스크립트에 잘못된 것이 있다고 생각한다. – StenW