Benötigen Sie Hilfe bitte.Ajax Json decode erhält korrekte Werte
Ich sende Daten über Jquery Ajax, die vor dem Senden codiert ist.
[["Snooks",true],["blastman125",true],["Firebad",true]]
In PHP ich tun:
$player_j_info = json_decode(stripslashes($_POST['player_info']));
foreach($player_j_info as $p_info){
echo "Name: $p_info[0]<br/>Val: $p_info[1]<br/><br/>";
}
Wenn ich das tue, es nur der letzte Wert des Arrays zurückgibt. Kann mir bitte jemand erklären?
Danke!
Edit:
$(document).on('click', '.update_league_team_submit', function(event){
var form_player_count = 0;
var form_player_selected_count = 0;
var player_data_array = [];
var player_data_json_array;
$('#form_players #team_players_group input').each(function() {
var this_member_name = $(this).attr("name");
var this_member_value = $(this).prop('checked');
player_data_array[form_player_count] = [this_member_name, this_member_value];
player_data_json_array = JSON.stringify(player_data_array);
form_player_count++;
if($(this).prop('checked') === true){
form_player_selected_count++;
}
});
var formData = {
'league_id' : $('input[name=league_id]').val(),
'team_id' : $('input[name=league_team_id]').val(),
'player_info' : player_data_json_array,
'form_player_count' : form_player_count,
'form_player_selected_count' : form_player_selected_count
};
$.ajax({
type : 'POST', // define the type of HTTP verb we want to use (POST for our form)
url : '/league/pop_join_league_member_submit.php', // the url where we want to POST
data : formData, // our data object
dataType : 'json', // what type of data do we expect back from the server
encode : true,
beforeSend: function(){
$("#form_players .form_info").remove();
$("#form_players .form_controls p").hide();
}
})
.done(function(data) {
if (! data.success) {
$("#form_players .form_info").remove();
$("#form_players .form_controls p").hide();
if (data.errors.bam) {
$("#form_players").append(data.errors.bam);
}
if (data.errors.invalid_member_size){
$("#form_players .form_controls .spinner").remove();
$("#form_players .form_controls p").show();
$('<div class="form_info" style="padding-top:8px;"><span class="error">You selected too many members, try again.</span></div>').insertBefore('#form_players .form_controls').hide().fadeIn();
}
$("#form_players .form_info").remove();
$("#form_players .form_controls p").show();
} else {
$("#form_players .form_controls .spinner").remove();
$("#form_players .form_controls p").show();
$('<div class="form_info" style="padding-top:8px;"><span class="success success_page">Teams updated.</span></div>').insertBefore('#form_players .form_controls').hide().fadeIn();
}
});
event.preventDefault();
});
@rcsnooks Nein, habe ich nicht. Sie haben gerade Ihren Beitrag bearbeitet. – Chris
@rcsnooks Nun, der Code, den Sie gepostet haben, funktioniert genauso wie erwartet. Die einzige Erklärung, die ich mir vorstellen kann, ist, dass '$ _POST ['player_info']' nicht das ist, was du denkst. – Chris
@rcsnooks Auch in Chrome und Firefox können Sie den Inhalt von Benachrichtigungsfeldern kopieren und einfügen. – Chris