Błąd podczas przesyłania zmiennej php poprzez Ajax

0

Przesylam Ajaxem zmienna z formularza o nazwie tosave Gdzies robie blad poniewaz zamiast wartosci tego pola zwraca mi jego nazwe a tym samym zwraca zawsze true.

<input type="text" name="tosave">
<input type="submit"  value="poslij" id="submit" onclick="edit_row();">
function edit_row()
{
 $.ajax
 ({
  type:'post',
  url:'save.php',
  data:{
   tosave:'tosave',
  },
  success:function(response) {
   if(response =="success")
   {
    alert('ok');
   }
  }
 });
}
<?php
if(!empty($_POST['tosave']))
{
$foo = fopen("plik.txt","a+");
flock($foo, 2);
fwrite($foo,$_POST['tosave']."\r\n");
lock($foo ,3);
fclose($foo);
echo "success";
exit();
}
?>
0
  data:{
   tosave: getElementById('submit').value,
  }
0
Patryk27 napisał(a):
  data:{
   tosave: getElementById('submit').value,
  }

Niestety nie działa. Nic się nie dodaje do pliku teraz wiec tez nie ma alerta po success.
Działa jedynie w tym przypadku:
tosave: 'tosave', ale dodaje sie nazwa pola czyli tosave zamiast wartosc.
Nawet jesli zmienie na:
xtosave: 'tosave',
Tez nic.
Oczywiscie w pliku .php zmieniam nazwe tablicy post

1

document.getElementById() miało być.

Zanim jednak spróbujesz tę wersję, mógłbyś mi wytłumaczyć - tak krok po kroku - dlaczego Twoim zdaniem tosave: 'tosave' powinno choć trochę działać tak, jak Ci się wydaje? :-)

0
Patryk27 napisał(a):

document.getElementById() miało być.

Zanim jednak spróbujesz tę wersję, mógłbyś mi wytłumaczyć - tak krok po kroku - dlaczego Twoim zdaniem tosave: 'tosave' powinno choć trochę działać tak, jak Ci się wydaje? :-)

OK poradzilem sobie. Dzieki za pomoc.

Wiec tak. Pole text w tym przypadku ma miec jakies id przykladowo: id="ts"
I teraz:
tosave: document.getElementById("ts").value,

Tylko jest jedna dziwna rzecz. Nie zawsze pokazuje mi sie alert. Niby wszystko jest ok ale czasami nie ma informacji.

0

Mam jeszcze male pytanie. Próbuje zrobic zdarzenia ale cos nie idzie. Niby informację się wyświetlają ale znikają po ułamku sekundy. Mógłbym to zrobić z alertem ale tak będzie ładniej wyglądać.

Div wyśw. informację

<div id="result"></div>

Ajax

 $(document).ready(function() {
 $('#submit').click(function() {
					
 $.ajax
 ({
  type:'post',
  cache: false,
  url:'save.php',
  data: $("#action").serialize(),
  dataType: "html",

 success: function(response) {

if(response == 'success')
{
	alert('ok');
}
if(response == 'puste')
{
	$('#result').html(response);

}
}
  
 });
});
});

I plik .php

<?php
if(!empty($_POST['tosave']))
{
	$foo = fopen("plik.txt","a+");

			flock($foo, 2);
			fwrite($foo,$_POST['tosave']."\r\n");
            flock($foo ,3);
            fclose($foo);
echo "success";
exit();

} else {
	
echo "puste";
	
}
?>

W pierwszym przypadku poprawie sie wyswietla alert. No ona raczej zniknąć nie moze ale juz w drugim (jesli pośle puste pole) pokaże się na ułamek sek. napis i znika.

0

@Patryk27: :) Czy mógłbys wskazać co robie źle ?

0

Opcja 1.
Zamień<input type="submit" value="poslij" id="submit" onclick="edit_row();"> na <button type="button" id="submit">poslij</button>

Opcja 2.

$(document).ready(function () {
    $('#submit').click(function (e) {
        e.preventDefault();
        $.ajax
        ({
            type: 'post',
            cache: false,
            url: 'save.php',
            data: $("#action").serialize(),
            dataType: "html",

            success: function (response) {

                if (response == 'success') {
                    alert('ok');
                }
                if (response == 'puste') {
                    $('#result').html(response);

                }
            }

        });
    });
});
0

Problem rozwiązany.

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