AJAX - записване в база данни.

metal_head

Registered
От снощи уча AJAX и почти няма неясни неща. Научих се да извличам разни работи от разни файлове, но нещо не мога да се оправя с четенето и записването от базите данни. За момента ползвам GET метода, защото е малко по-простичък.

Ето какво имам:


[js]
function SetRatemark(postId, userId){
var req;

try{
// Проверка за Opera, Firefox, Safari
req = new XMLHttpRequest();
} catch (e){
// Проверка за IE
try{
req = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try{
req = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e){
// Something went wrong
alert('Браузърът е прекалено стар!');
return false;
}
}
}

// Ако имаме отговор от сървъра, записваме в textfield myfield отговора.

req.onreadystatechange = function(){
if(req.readyState == 4) document.myfield.value = req.responseText;
}

//Изпращаме заявка до файл calculate.php с параметрите
var queryString = '?post_id='+postId+'&userId='+userId+'&rate=1'
req.open('GET', 'calculate.php'+querryString, true);
req.send(null);
}
[/js]

В calculate имам:

PHP:
mysql_query("INSERT INTO post_rates (post_id, user_id, type, rate) 
VALUES('".$_GET['post_id']."', '".$_GET['user_id']."', 'for', '".$_GET['rate']."')");
echo "INSERT INTO post_rates (post_id, user_id, type, rate) 
VALUES('".$_GET['post_id']."', '".$_GET['user_id']."', 'for', '".$_GET['rate']."')";

Имам бутон във файла с AJAX кода:
HTML:
<input type='button' onclick='SetRatemark(".$post['post_id'].", ".$user_id.");' name='set_mark' class='rate_button' value='     '>


Като кликна бутона обаче нищо не се записва в базата данни и нищо не се показва в текстовото поле myfield.

Само да отбележа, че с този JavaScript нямам никакъв опит, но имам голям опит с друг JavaScript, който е диалект на оригиналния и се използва за гейм разработка в игровия енджин Unity, така че разбирам какво става. Не разбирам само защо не се получава :/
 
С този урок имам проблем. Аз го бях намерил преди това, но тук се използва някакъв синтакс, който изобщо не съм го срещал никъде, и никъде не се използва XMLHttpRequest конструктора, изобщо.. не ми е ясно какво става в този урок. Естествено и не ми работи. Ето, пренаписах го специално, за да постна резултата:

Ето започнатият скрипт:

PHP:
echo"
<script type='text/javascript'>
$(function() {
$('#set_mark').click(function() {
var postId = $('#post_id').val();
var userId = $('#post_id').val();
var type = $('#rate_type').val();
var rateMark = $('#ratemark').val();
var ratesLeft = $('#rates_left').val();
console.log(postId,userId,type,rateMark,);
return false;
});

});
</script>
";


Ето ми и формата:

PHP:
echo"
	<form name='rate[".$post['post_id']."]' method='post'>
	<input type='hidden' value='".$post['post_id']."'  name='post_id'/>
	<input type='hidden' value='$user_id'  name='user_id'/>
	<input type='hidden' value='for'  name='rate_type'/>
	<input type='hidden' value='$ratesleft'  name='rates_left'/>
	<input type='submit' name='set_mark' class='rate_button' value='     '>
	<select name='ratemark[".$post['post_id']."]'><option value='1'>Полезно</otion><option value='2'>Ненужно</otion>
	<option value='3'>Артистично</otion><option value='4'>Забавно</otion><option value='5'>Скучно</otion>
	<option value='6'>Закъсняло</otion><option value='7'>Учтиво</otion><option value='8'>Оптимистично</otion></select> X ".$ratesleft."</form>";

Като кликна submit бутона, страницата си презарежда като змей и нищо не се показва в конзолата.

Аз четох тези уроци:
http://www.tizag.com/ajaxTutorial/ajax-javascript.php, защото там са обяснили, не са показали само кода, но и са обяснили кое защо и как, проблемът е, че няма за записване в база данни :/
 
metal_head каза:
От снощи уча AJAX и почти няма неясни неща.

Евала пич. Аз го уча от доста време и доста неща не са ми ясни, но като имам проблем ще ти драсна едно ЛС.
 
аз пък го научих почти целия за ~5 часа :P

ся @metal_head най добре изгледай всички уроци в videotutorials и тука за да го загрееш всичкото ;P разгледай и тука http://api.jquery.com/

а при тебе сега не става защото ти селектваш несъществуващо id
ето виж var postId = $('#post_id').val(); това в болд се нарича селектор а тука в
<input type='hidden' value='".$post['post_id']."' name='post_id'/> ти нямаш id=post_id че да го селектваш

ето това трябва да ти е кода

PHP:
echo"
<script type='text/javascript'>
$(function() {
$('#set_mark').click(function() {
var postId = $('#post_id').val();
var userId = $('#user_id').val();
var type = $('#rate_type').val();
var rateMark = $('#ratemark').val();
var ratesLeft = $('#rates_left').val();
console.log(postId,userId,type,rateMark);
return false;
});

});
</script>
";
<form name='form' method='post'>//тфа rate дет беше ти прави номерата с постоянното зареждане

	<input type='hidden' value='".$post['post_id']."' id='post_id' name='post_id'/>

	<input type='hidden' value='$user_id' id='user_id' name='user_id'/>

	<input type='hidden' value='for' id='rate_type'  name='rate_type'/>

	<input type='hidden' value='$ratesleft' id='rates_left'  name='rates_left'/>

	<input type='submit' name='set_mark' id='set_mark' class='rate_button' value='     '>

	<select name='ratemark'><option value='1'>Полезно</option><option value='2'>Ненужно</option>

	<option value='3'>Артистично</otion><option value='4'>Забавно</option><option value='5'>Скучно</option>

	<option value='6'>Закъсняло</option><option value='7'>Учтиво</option><option value='8'>Оптимистично</option></select> X ".$ratesleft."</form>";

иии бтв всички </option> ти бяха </otion>но ги оправих


metal_head каза:
От снощи уча AJAX и почти няма неясни неща.
бтв на мене не ми се струва така... имаш доста грешки и в jquery и в самия html... оправих ти кода нооо прегледай уроците ще ти са от голяма полза :)
metal_head каза:
С този урок имам проблем. Аз го бях намерил преди това, но тук се използва някакъв синтакс, който изобщо не съм го срещал никъде, и никъде не се използва XMLHttpRequest конструктора, изобщо.. не ми е ясно какво става в този урок.
езика постоянно се мени и се опростява... ти може би гледаш по стари уроци и затова не ти се получават нещата... започни отново от 0-лата по добре :)

иии не забрявай да добавиш и jquery библиотеката ;)
т.е в <head> сложи това
HTML:
<script src="http://code.jquery.com/jquery-1.5.2.js"  type="text/javascript"></script>

дано да съм ти помогнал :)
 

Back
Горе