Почему javascript не работает при динамическом вызове (Ajax)?
Я был большим поклонником http://www.kryogenix.org/code/browser/sorttable/ кода таблицы сортировки javascript. Это работает на многих уровнях.
Тем не менее, я недавно столкнулся с проблемой, пытающейся заставить сортировки работать при вызове через ajax. У меня есть слой div на моей главной странице, и я вызываю динамический запрос с помощью ajax для динамического заполнения страницы. Я думал, что эти результаты могут быть отсортированы с помощью вышеуказанного файла JavaScript. Однако это не так, и я не унываю, почему это не сработает.
Я убедился, что код работает на странице, поместив тот же запрос на страницу и заполнив его, когда страница загружается нормально, а sorttable.js работает как шарм.
Если бы кто-нибудь мог сказать мне, почему клиентский язык, такой как javascript, не работал бы при вызове через ajax, я был бы признателен. Я уверен, что это так, но я, скорее всего, что-то обманул.
Для справки это мой jquery / ajax
<script type="text/javascript">
$(document).ready(function(){
$(".small_radio").click(function() {
//check radio buildings for selected value
var radBuild = $('input:radio[name=buildings]:checked').val();
//check radio daterange for selected value
var radDate = $('input:radio[name=daterange]:checked').val();
//create array for multiple possibilites from checkbox users
var chkUsers = [];
//loop through checkboxes appending values to array
$('#checkall :checked').each(function() {
chkUsers.push($(this).val());
});
//send the request
$.ajax({
url: "/inventory/pick-print-results.php",
type: "post",
data: "buildings=" + radBuild + "&daterange=" + radDate + "&users[]=" + chkUsers,
// callback for success
success: function(data, textStatus) {
$(".loadonly").hide();
$(".ajax_stuff").html(data); //no data here
//alert(data); //Data here
}, //end success else...
//if failsauce throw error
error: function() {
alert('Not OKay');
} //end error failsauce
}); //ends .ajax function
}); //end #checkall. click function
}); // ends ready function
</script>
Это мои данные php-запроса, которые вызываются через ajax.
<?php $message.='
<input type="hidden" value="'.$big_chunk_sql.'" id="displayed_sql" name="displayed_sql">
<input type="hidden" value="'.$row_count.'" id="amount" name="amount">
<input type="hidden" value="print" id="print" name="print">
<table border="0" width="100%" class="sortable">
<th class="admin">Location</th>
<th class="admin">Pick For</th>
<th class="admin">Requested Date</th>
<th class="admin">Part Number</th>
<th class="admin">Quantity</th>
<th class="admin">Received Date</th>
<th class="admin">Action</th>';
while($data=mysql_fetch_array($big_chunk_query)) {
//Deal with operator Name Don Ford = D Ford
list($user_first,$user_last)=explode(' ',$data['description']);
$user_first=strtoupper(substr($user_first,0,1));
$user_last=ucfirst($user_last);
$operator_name=$user_first.' ' . $user_last;
if ($i%2 !=0)
$rowColor = 'tr2center';
else
$rowColor = 'tr1center';
$pendingdate= trim($data['received_date']);
$newpendingdate = date('m-d-Y',strtotime($pendingdate));
$message.= '<tr class="'.$rowColor.'">
<td>'. $data['location'].'</td>
<td>'.$operator_name.'</td>
<td>'.date("m-j-y, g:i a", strtotime($data['date_requested'])) .'</td>
<td>'.$data['part_number'] . '</td>
<td>'. $data['qty_requested'] . '</td>
<td>'. $newpendingdate . '</td><td>
<a href="picking.php?radiopart='.urlencode($data['org_transaction_id']) .'">Mark Picked</a></td></tr>';
if($data['notes_to_picker']!='') {
$message.= '<tr class="'.$rowColor.'" align="center"><td colspan="2"> </td><td align="right"><b>notes:</b></td><td colspan="4">' . $data['notes_to_picker'].'</td></tr>';
}
$i++;
}
$message.= '</table>';
echo $message;
?>
2 ответа
Ваш случай - это то, что автор плагина посчитал бы "продвинутым", если бы вы прочитали документацию по указанной вами ссылке. http://www.kryogenix.org/code/browser/sorttable/
в вашем успехе обратного вызова, вам нужно sorttable.makeSortable($("#tableid")[0]);
Вы передаете данные неправильно использовать это
data: {"buildings":radBuild,"daterange":radDate,"users":JSON.stringify(chkUsers)}