Ich weiß, es gibt eine Tonne von anderen 'doppelte' Fragen da draußen, in Bezug auf dieses Thema. Aber ich bin immer noch fest. Ich versuche einfach, ein Array zu loggen, das von PHP über Ajax übergeben wurde.CakePHP Return Array von Ajax Post Call
In CakePHP 2.X:
In Aussicht:
<button class="quarter q1" value="1" value>Quarter 1</button>
<button class="quarter q2" value="2">Quarter 2</button>
<button class="quarter q3" value="3">Quarter 3</button>
<button class="quarter q4" value="4">Quarter 4</button>
<script type="text/javascript">
jQuery(document).ready(function($){
$('.quarter').click(function(e){
e.preventDefault();
var quarter_val = this.value;
$.ajax({
url: "/rep/testQueue",
type: "post",
data: {quarter_val:quarter_val},
success: function(data) {
var months = <?php echo json_encode($months); ?>;
console.log(months);
},
error: function(){
},
complete: function() {
}
});
});
});
</script>
In meinem Controller:
public function queue() {
if($this->request->isPost()) {
$this->autoRender = false;
$this->layout = false;
$quarter_chosen = $this->request->data['quarter_val'];
$month s= $this->_get_quarter($quarter_chosen);
$this->set('months', $months);
}
}
public function _get_quarter($quarter_chosen){
switch($quarter_chosen) {
case 1: return array('January', 'February', 'March');
case 2: return array('April', 'May', 'June');
case 3: return array('July', 'August', 'September');
case 4: return array('October', 'November', 'December');
}
}
Ich habe versucht, mehrere verschiedene Dinge. array_map, JSON.parse, Setzen von dataType auf json. Wenn ich versuche, Monate in der Ajax-Erfolgsfunktion zu loggen, bekomme ich null.
Wenn ich etwas nicht richtig verstehe, bitte füllen Sie mich aus, oder teilen Quellen, die werden. Dankesehr.
Woher kommt diese PHP-Variable $ monats? Warum verwenden Sie die Datenvariable nicht in der Erfolgsfunktion? –
Sie greifen auf eine PHP-Variable von jQuery zu, die nichts über PHP weiß. Der Code, den Sie vom Controller senden, ist kein JSON, daher können Sie ihn nicht in jQuery analysieren. Sie können nicht auf ein PHP-Mitglied namens "$ monates" auf dieser Seite zugreifen, das ist nicht der Fluss. Sie müssen mit jQuery, nicht mit PHP umgehen. Ich schlage vor, Sie lesen ein wenig mehr über jQuery und PHP, ist nicht so schwierig und wenn Sie es besser verstehen, werden Sie besser und einfacher. –
Es kommt als Array() heraus, aber wenn ich versuche, Protokolldaten zu trösten, druckt es nichts. –