Przesłanie danych z modal do php.

0

Mam modala z textboxami. Wypełniam wysyłam jest okej. Wpis do bazy danych się dodaje ale nie ma w nim danych wpisanych w textboxach. Co zrobiłem źle?
Dodam, że za pomocą "zwykłego" formularza html z action i method działa okej.

MODAL:

<div id="addEntryModal" class="modal fade" role="dialog">
			<div class="modal-dialog">
				<!-- content -->
				<div class="modal-content">
					<div class="modal-header">
						<button type="button" class="close" data-dismiss="modal">&times;</button>
						<h4><span class="glyphicon glyphicon-plus"></span> Dodaj wpis</h4>
					</div>
					<div class="modal-body">
						<form name="addEntryForm"role="form" action="addEntry.php" method="POST">
							<div class="form-group">
								<label for="title">Tytuł</label>
								<input type="text" class="form-control" id="title" placeholder="Tytuł wpisu">
 							</div>
							<div class="form-group">
								<label for="content">Treść</label>
								<input type="text" class="form-control" id="content" placeholder="Treść wpisu">
							</div>
							<button name="submit" type="submit" class="btn btn-success btn-block"><span class="glyphicon glyphicon-ok"></span>Dodaj</button>
						</form>
					</div>
					<div class="modal-footer">
						<button type="submit" class="btn btn-danger btn-default pull-left" data-dismiss="modal">Anuluj</button>
					</div>
				</div>
			</div>
		</div> 

Kawałek kodu PHP do dodania do bazy.

 if(isset($_POST["submit"]))
	{
		$title = $_POST["title"];
		$content = $_POST["content"];
		$date = Date("Y-m-d");

Skrypt

		<script>
		$(document).ready(function () {
    $("input#submit").click(function(){
        $.ajax({
            type: "POST",
            url: "addEntry.php"
        });
    });
});
		</script>

dodanie znaczników <code class="html"> i <code class="php"> - @furious programming

0

No przecież tym ajaxowym requestem nie wysyłasz żadnych danych.
jQuery ma się domyślić, że chodzi Ci o textboxy z formularza?

0

To jak się za to zabrać? php sam powinnien wydobyć z POST skoro mam dodane action i method w formularzu.

0

No ale Ty nie wysyłasz formularza!
Pokaż mi fragment, gdzie rzekomo wysyłasz te dane.

$.ajax({
            type: "POST",
            url: "addEntry.php"
        });

Tutaj wykonujesz pusty request, musisz dodać data: { cośtam }

0

Zmieniłem na coś takiego:

$(document).ready(function () {
    $("input#submitAddEntryModal").click(function(){
        $.ajax({
            type: "POST",
            url: "addEntry.php", //process to mail
            data: $('form.addEntryForm').serialize(),
            error: function(){
                alert("failure");
            }
        });
    });
});
<div id="addEntryModal" class="modal fade" role="dialog">
			<div class="modal-dialog">
				<div class="modal-content">
					<div class="modal-header">
						<button type="button" class="close" data-dismiss="modal">&times;</button>
						<h4><span class="glyphicon glyphicon-plus"></span> Dodaj wpis</h4>
					</div>
					<div class="modal-body">
						<form name="addEntryForm" role="form" action="addEntry.php" method="POST">
							<div class="form-group">
								<label for="title">Tytuł</label>
								<input type="text" class="form-control" id="title" placeholder="Tytuł wpisu">
 							</div>
							<div class="form-group">
								<label for="content">Treść</label>
								<input type="text" class="form-control" id="content" placeholder="Treść wpisu">
							</div>
							<button id="submitAddEntryModal" name="submitAddEntryModal" type="submit" class="btn btn-success btn-block"><span class="glyphicon glyphicon-ok"></span>Dodaj</button>
						</form>
					</div>
					<div class="modal-footer">
						<button type="submit" class="btn btn-danger btn-default pull-left" data-dismiss="modal">Anuluj</button>
					</div>
				</div>
			</div>
		</div>

Lecz też wysyła ale bez treści.
Mógłbyś przybliżyć czemu się dokładniej przyjrzeć?

dodanie znaczników <code class="php"> i <code class="html"> - @furious programming

0

Dodam, że modal jest w innym pliku, skrypt w innym/w index w head to samo
a całość includuje w index.php.

0

. to selektor klasy, a nie name, zatem $('form.addEntryForm') nic nie zwraca.
Poza tym domyślnie dane idą GETem (o czym przekonałbyś się zaglądając do konsoli przeglądarki, czego oczywiście nie zrobiłeś), a nie POSTem.

0

Dlaczego GET skoro ustawiłem POST?

0

O, mea culpa, nie zauważyłem - masz rację.
Co nie zmienia faktu, że masz zły selektor.
Dodaj id tej formie i zrób $('#addEntryForm')

0

Niestety wciąż nie działa. Nie wiem co może być powodem.

<script>

$(document).ready(function () {
$("input#submitAddEntryModal").click(function(){
$.ajax({
type: "POST",
url: "addEntry.php",
data: $('form#addEntryForm').serialize(),
error: function(){
alert("failure");
}
});
});
});


```html
// modal
	<form id="addEntryForm" name="addEntryForm" role="form" action="addEntry.php" method="POST">

dodanie znaczników <code class="html"> i <code class="php"> - @furious programming

0

A konsola co mówi?


Edit: ej, ej, ej, przecież Ty w ogóle nie masz poustawianych nazw tych inputów, masz tylko `id`ki, które nie są serializowane.
0

Dzięki wielkie! Wystarczyło dodać atrybut name do kontrolek, żeby przepisało wartość.

Teraz tylko dlaczego? Jak to wyjaśnić? Co się dzieje, za kulisami by te name musiało być a nie id skoro i tak są w formularzu.

0

bo po prostu pola są serializowane po atrybucie name , jak go nie ma dane są niewidoczne..

0
Krostekek napisał(a):

Teraz tylko dlaczego? Jak to wyjaśnić? Co się dzieje, za kulisami by te name musiało być a nie id skoro i tak są w formularzu.

Nic się nie dzieje magicznego za kulisami, po prostu atrybut name określa pod jaką nazwą wartość pola jest przesyłana, to że to działało z id to już jakiś psikus przeglądarki, ponieważ id jest zupełnie do czego innego.

0

Dziwne, dodałem name w formularzu modala usunąłem skrypt i też działa...

1

No tak, bo skrypt nie przerywał przesłania formularza przez przeglądarkę (zabrakło preventDefault/return false) - w efekcie czy ze skryptem czy bez przeglądarka przeładowywała stronę, prawda? Tylko ze skryptem formularz był wysyłany dwa razy.

0

Więc może działać bez skryptu? A z po prostu nie będzie przeładowania strony?

1 użytkowników online, w tym zalogowanych: 0, gości: 1