2016-08-18 4 views
1

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.

+0

Können Sie uns Ihre AJAX respo teilen nse? – James

+0

meine AJAX-Antwort ist String mit Inhalt alle HTML-Elemente der Seite –

Antwort

0

mybe Sie haben Sonderzeichen in Ihrem Inhalt. Sie ersetzen diese Zeichen vor dem Senden in PHP-Code und kehren nach erhalten in Javascript

"&" = & amp;

"\"“= & quot;

"'"= & apos;

"<"= & lt;

">"= & gt;

remove Platz nach & pase

+0

das ist meine 'str' wenn ich div Tag hinzufügen:' ' –

+0

In Ihrem Inhalt sind Sonderzeichen wie <," ,> .replace Sonderzeichen in PHP-Code mit entsprechenden Code und wenn get Zeichenfolge in AJAX (Client-Seite) ersetzt alle ersetzten Zeichen mit die ursprünglichen Zeichen und fügen Sie dann Ihre Zeichenfolge Div-Inhalt hinzu. – Masoomian

Verwandte Themen