Ich habe ein Problem ist, wenn ich Ajax verwenden, um Daten an PHP-Server zu senden und es in der Ansicht anzuzeigen, aber Daten können nicht angezeigt, obwohl es geladen, wenn ich in der Konsole eincheck. Bitte hilf mir das zu lösen. Dies ist mein Code:
anzeigen und SkriptKann das Element nicht anzeigen, obwohl es geladen wurde?
<div class="col-xs-12" style="display: block; margin-bottom: 10px;">
<h5 class="col-sm-3 col-sm-offset-1 control-label" style="">Vị trí:</h5>
<div id="positionDiv" class="col-sm-3">
<select id="position" tabindex="9" name="recruitment[positions]" value="<?php echo $this->data['recruitment']->positions; ?>" data-none-selected-text class="selectpicker">
<option style="display: none" selected disabled value=""></option>
<?php foreach($this->data['position'] as $key => $value): ?>
<option value="<?php echo $value->positions ?>" <?php if ($this->data["recruitment"]->positions == $value->name): ?>selected<?php endif ?>>
<?php echo $value->name; ?>
</option>
<?php endforeach ?>
</select>
<input id="positionHidden" type="hidden">
</div>
<script>
$(document).ready(function() {
$("#position option").each(function(){
$(this).siblings("[value='"+ this.value+"']").remove();
});
$('#market').on('change', function(event) {
var value = $('#market').val();
$.ajax({
url: window.location.href,
type: 'POST',
data: {
market: value
},
success: function(response){
var indexStart = response.indexOf('id="position"') - 8;
var indexEnd = response.indexOf('positionHidden') - 49;
var str = response.substring(indexStart,indexEnd).replace(/\s\s+/g, ' ');
$('#position').remove();
$('#positionDiv').append(str);
//document.getElementById('positionDiv').innerHTML = str;
console.log($('#positionDiv'));
}
});
});
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
options.async = true;
});
});
</script>
-Controller
class CandidateController extends BaseController {
public function __construct($route, $urlValue) {
parent::__construct($route, $urlValue);
}
public function initData() {
$this->view->setData("resource", ResourceCompany::getAllResource());
$this->view->setData("market", Market::getAllMarket());
}
public function showPosition() {
$market = $_POST['market'];
isset($market) ? $market : null;
$this->view->setData("position", Recruitment::getPositionByMarket($market));
}
public function showTitle() {
isset($market) ? $market : null;
isset($position) ? $position : null;
$this->view->setData("title", Recruitment::getTitleByMarketPosition($market, $position));
}
public function register() {
$this->initData();
if (isset($_POST['market'])) {
$this->showPosition();
}
}
$this->view->output("menu");
}
Alles in Ordnung, Daten zu senden und erhalten, ist in Ordnung, aber es kann nicht angezeigt werden in Ansicht, obwohl ich es von console.log bekommen kann.
Können Sie uns Ihre AJAX respo teilen nse? – James
meine AJAX-Antwort ist String mit Inhalt alle HTML-Elemente der Seite –