Попробуйте этот
html-код
<div id="refresh">
<input type="text" />
<input type="button" id="click" />
</div>
jQuery code
<script>
$('#click').click(function(){
var div=$('#refresh').html();
$.ajax({
url: '/path/to/file.php',
type: 'POST',
dataType: 'json',
data: {param1: 'value1'},
})
.done(function(data) {
if(data.success=='ok'){
$('#refresh').html(div);
}else{
// show errors.
}
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});
});
</script>
php page code path = / path / to / file.php
<?php
header('Content-Type: application/json');
$done=true;
if($done){
echo json_encode(['success'=>'ok']);
}
?>
Представления Django должны возвращать HttpResponse
объектов. Ваше представление вызывает run
, но не возвращает ничего (помните, что функции Python возвращают None
в отсутствие оператора, явно возвращающего что-то еще) . Поэтому измените эту строку с:
run(request, build)
на:
return run(request, build)
Конечно, это будет работать, только если run
вернет экземпляр HttpResponse
.