Witam!
Napisałem taki kod html/, mający na celu dodanie wpisu do 'systemu newsów' stronki, którą piszę (i jednocześnie uczę się jsa/jquery/php):
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Dodawanie wpisu</title>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript">
(...)kod niżej
</script>
</head>
<body>
<form name="addnews">
<h3>Dodawanie newsa</h3>
<table>
<tr>
<th>
<legend for="addersname">Imię i nazwisko dodającego</legend>
</th>
<td>
<input type="text" name="addersname" />
</td>
</tr>
<tr>
<th>
<legend for="date">Data</legend>
</th>
<td>
<input type="text" name="date"/>
</td>
</tr>
<tr>
<th>
<legend for="newscontent">Treść newsa</legend>
</th>
<td>
<textarea name="newscontent" cols="30" rows="10"></textarea>
</td>
</tr>
<tr><th></th><td><input type="submit" value="Wyślij newsa" name="sumbitbutton" /></td>
<table>
</form>
<div id="status"></div>
</body>
</html>
javascript/jquery:
Date.prototype.shortFormat = function() { return this.getDate() + "/" + (this.getMonth() + 1) + "/" + this.getFullYear(); }
$(document).ready(function(e) {
var newDate = new Date();
$("form[name=addnews] input[name=date]").val(newDate.shortFormat()).attr("disabled", "disabled");
$("form[name=addnews]").submit(function(e) {
$("#status").text("Czekaj, trwa dodawanie...");
//wywołuje ajaxa
$.ajax({
type: "POST",
url: "news.php",
data: {
date: $(this).children("input[name=date]").val(),
content: $(this).children("input[name=newscontent]").val(),
author: $(this).children("input[name=addersname]").val()
},
success: function(xml) {
alert("Poprawnie dodano nowy wpis!");
$("#status").text("");
},
error: function(xml) {
alert("Wystąpił błąd z obsługą ajaxa. \n" + xml);
}
});
});
});
No i kod php:
<?php
$filename = "news.xml";
if (file_exists($filename))
$rawBlog = file_get_contents($filename);
$xml = new SimpleXmlElement($rawBlog);
$entry = $xml->entries->addChild("entry");
$entry->addChild("date", $_REQUEST["date"]);
$entry->addChild("conent", stripslashes($_REQUEST["content"]));
$entry->addChild("author", $_REQUEST["author"]);
$file = fopen($filename, 'w');
fwrite($file, $xml->asXML());
fclose($file);
?>
Plik news.xml to plik z tymi wpisami, ma strukturę
news
->entry
-->date
-->content
-->author
->entry
-->date
-->content
-->authot
(....)
No i niestety to wszystko nie chce mi działać, jak odpalam(oczywiście na xamppie, z obsługą php) otrzymuję alerta z errorem: [object Object]
. Niezbyt wiele mi to mówi :)
czy może ktoś mający trochę czasu i większe pojęcie ode mnie mogłby zerknąć na kod? Mam nadzieję, że kod jest czytelny, ale mam wrażenie że się tu rozjechał i nie wygląda zbyt ładnie, no coż, bywa.
pozdrawiam
piternet
@Edit
Nie dopisałem, a to ważne, że podejrzewam, że problem tkwi w złej obsłudze ajaxa przy pomocy jquery. Pisałem bardzo podobny kod bez użycia jquery (był jako przykład w książce, z której uczyłem się javascriptu) i on działał. Tu stosuję jquery- nie działa.
@Edit2
Zdaję sobie sprawę, że budowanie strony na tabelkach to fatalne wyjście, użyłem jej tylko do tego prostego formularza, ustawianie jego wyglądu przy pomocy css to masakra.