Biểu mẫu gửi đi và không ở trên cùng một trang do thuộc tính action trên biểu mẫu và nút gửi bình thường.
Dẫn đến .submit()
của bạn phương thức bao gồm .preventDefault()
có thể không được thông dịch sau khi html được tải.
Bạn có thể làm điều gì đó theo dòng sau:
<html>
...
<body>
...
<form id="formA" action="test.php" method="post" enctype="multipart/form-data">
<input id="commentData" name="commentData" type="text" />
<input type="submit" value="toDb" id="toDB" name="toDB" />
</form>
...
</body>
<script>
...script here...
</script>
</html>
Và javascript có thể là một cái gì đó dọc theo dòng:
( function( $ )
{
var submit = $( 'input[id=toDB]' );
$( submit ).on
(
'click',
function( event )
{
event.preventDefault();
var form = $( this ).parent();
// Get form fields
var data = $( form ).serializeArray(), obj = {}, j = 0;
for( var i = 0; i < data.length; i++ )
{
if( data[i].name in obj )
{
var key = data[i].name + '_' + j;
obj[key] = data[i].value;
j++;
}
else
{
obj[data[i].name] = data[i].value;
}
};
// Make AJAX request
$.ajax
(
{
url: $( form ).attr( 'action' ),
type: 'POST',
data: 'toDB=' + JSON.stringify( obj ),
success: function( data, textStatus, xhr )
{
// Do something with data?
...
alert( 'ok' );
}
}
);
}
);
}( jQuery )
);
Xem jsfiddle cho chính bạn.
Bạn có thể biết nó đang hoạt động vì bạn gặp lỗi bảng điều khiển không tìm thấy đích yêu cầu - 404 - mặc dù trang không được làm mới, bạn vẫn ở ngay vị trí của mình ... với một trang thích hợp để gửi nó hoạt động đầy đủ.
CHỈNH SỬA
Tôi đã sửa đổi cài đặt 'dữ liệu' trong ajax()
gọi để các trường biểu mẫu được đặt dưới dạng chuỗi json thành biến POST [toDB].
Vì vậy, trong PHP của bạn, bạn sẽ làm:
$datas = json_decode( $_POST['toDB'], true );
Và bây giờ là $datas
của bạn biến là một mảng kết hợp chứa tất cả các tên và giá trị trường biểu mẫu của bạn. Tôi không hiểu 100% về tuyên bố tiếp theo này, nhưng bạn có thể cần sử dụng stripslashes()
của PHP trên dữ liệu POSTED trước khi sử dụng json_decode()
tức là:
//Connect to database server
mysql_connect( "localhost", "user", "" ) or die ( mysql_error() );
mysql_select_db( "test" ) or die( mysql_error() );
$strSQL = "SELECT * FROM comments order by RAND() LIMIT 5";
$rs = mysql_query( $strSQL );
if( !$rs )
{
echo 'Could not run query ' . mysql_error();
exit;
}
$dt1=date("Y-m-d");
if( isset( $_POST['toDB'] ) )
{
$datas = json_decode( stripslashes( $_POST['toDB'] ), true );
$dataA = $datas['commentData'];
$sql = "INSERT INTO comments( id, comment, datum )VALUES( DEFAULT, '" . $dataA . "', '" . $dt1 . "' );";
$result=mysql_query( $sql );
}
mysql_close();
Hy vọng điều đó sẽ giúp