PDA

View Full Version : سوال: مشکل در ساخت سیستم لایک



ABZiko
دوشنبه 18 اسفند 1393, 22:16 عصر
سلام، دوستان، بنده می خوام یک سیستم لایک و دیسلایک بنویسم، کد زیر رو برای HTML نوشتم :


<button type="submit" class="like bg-green">
<i class="icon-thumbs-up on-left"></i>Like
</button>
<button type="submit" class="disLike bg-red">
<i class="icon-thumbs-down on-left"></i>DisLike
</button>

و این هم برای Ajax :


<script type="text/javascript">
$(document).ready(function(e){
$(".like").click(function(e){
$.post("Initial.php",
{
'id':<?php echo $thing['id']; ?>
'user':'like'
},
function(data, status){
alert("Data: " + data + "\nStatus: " + status);
});
});
});
</script>
<script type="text/javascript">
$(document).ready(function(e){
$(".disLike").click(function(e){
$.post("Initial.php",
{
'id':<?php echo $thing['id']; ?>
'user':'disLike'
},
function(data, status){
alert("Data: " + data + "\nStatus: " + status);
});
});
});
</script>


ولی نه اطلاعاتی ثبت می کنه و پیغامی می ده، مشکل از چیه؟

ABZiko
سه شنبه 19 اسفند 1393, 13:21 عصر
دوستان تا به حال کسی به همچین مشکلی بر نخورده؟:لبخندساده:

H:Shojaei
سه شنبه 19 اسفند 1393, 16:43 عصر
وقتی پیغام نمیده احتمالا خطای جاوا اسکریپت دارید...
برنامه رو اجرا کنید روی یکی از این دو لینک کلیک کنید بعد روی صفحه کلیک راست کنید و گزینه inspect element رو انتخاب کنید یا f12 رو بزنید...
تو گزینه ها و تب هایی که میاد تب console رو انتخاب کنید اونجا ارور هایی که مربوط به اجرا نشدن اسکریپتهای جاوا اسکریپت هست رو میتونید ببینید... بعد برطرفشون کنید

ABZiko
سه شنبه 19 اسفند 1393, 18:45 عصر
امتحان کردم ولی بازم هیچ پیغامی نداد .

H:Shojaei
سه شنبه 19 اسفند 1393, 19:13 عصر
بنده هم نگفتم این کارو بکنید پیغام میاد با این کار ارور های جاوا اسکریپت احتمالی رو میبینید و باید رفعشون بکنید...
پروژه رو بذارید اینجا تا بتونیم کمکتون کنیم...

bagherok
سه شنبه 19 اسفند 1393, 19:16 عصر
امتحان کردم ولی بازم هیچ پیغامی نداد .
نشد نداره!

بعد این خط یه کاما جا انداختید

'id':<?php echo $thing['id']; ?>

jionelmessi
سه شنبه 19 اسفند 1393, 19:21 عصر
<script type="text/javascript">
$(document).ready(function(e){
$(".like").click(function(e){
$.post("Initial.php",
{
'id':<?php echo $thing['id']; ?> ,
'user':'like'
},
function(data, status){
alert("Data: " + data + "\nStatus: " + status);
});
});
});
</script>
<script type="text/javascript">
$(document).ready(function(e){
$(".disLike").click(function(e){
$.post("Initial.php",
{
'id':<?php echo $thing['id']; ?> ,
'user':'disLike'
},
function(data, status){
alert("Data: " + data + "\nStatus: " + status);
});
});
});
</script>

اونجایی که زردش کردم جا افتاده

ABZiko
سه شنبه 19 اسفند 1393, 19:32 عصر
نشد نداره!

بعد این خط یه کاما جا انداختید

'id':<?php echo $thing['id']; ?>
ممنون درست شد !!!!!!!!:بوس:

ABZiko
سه شنبه 19 اسفند 1393, 19:33 عصر
یک سوال، من می خوام در بین اینکه داره اطلاعات رو با Ajax ثبت می کنم، یک آیکون لود نمایش بدم، اونو باید چطوری نمایش بدم ؟

hamedarian2009
سه شنبه 19 اسفند 1393, 22:01 عصر
یک سوال، من می خوام در بین اینکه داره اطلاعات رو با Ajax ثبت می کنم، یک آیکون لود نمایش بدم، اونو باید چطوری نمایش بدم ؟

فرض کن یه تگ div با آیدی loading داری داخلش یه عکس gif که مثلا در حال لود هست رو بزار و بعد دستورات زیر را قبل دستورات ای جکس بزار


<div id="loading">Loading...</div>
<script type="text/javascript">
$(document).ready(function (){
var loading = $('#loading');
loading.hide();
$( document ).ajaxStart(function() {
loading.show();
});

$( document ).ajaxStop(function() {
loading.hide();
});
//Something else
});
</script>

کتابخانه جی کوپری هم یادت نره الحاق صفحه کنی و من توی این مثال یک کلمه نوشتم (Loading) شما از عکس استفاده کن

ABZiko
چهارشنبه 20 اسفند 1393, 19:15 عصر
آفا باز به یک مشکلی خوردم، اینو نوشتم براث ثبت نظرات کاربران ولی کار نمی کنه :


<script type="text/javascript">
var explanation=$('textarea').val();
$(document).ready(function(e){
$(".submit").click(function(e){
$.post("Initial.php",
{
'userID':<?php echo $person['id']; ?>,
'firstName':<?php echo $person['firstName']; ?>,
'lastName':<?php echo $person['lastName']; ?>,
'file':<?php echo $person['file']; ?>,
'subID':<?php echo $thing['id']; ?>,
'explanation':explanation,
'user':'addComment',
beforeSend: function() {
$('#loader').css('display','block');},
success: function(data) {
$('#loader').css('display','none');}},
function(data, status){
alert("Data: " + data + "\nStatus: " + status);
});
});
});
</script>

ABZiko
پنج شنبه 21 اسفند 1393, 09:25 صبح
دوستان می شه لطف کنید کمک کنید؟:لبخندساده:
ممنون

hamedarian2009
پنج شنبه 21 اسفند 1393, 09:45 صبح
من توی این بلاگ نحوه کار ای جکس با فرم رو آموزش دادم طبق این عمل کنید میتونید data رو به روش خودتون اضافه کنید توی این آموزش از serialize استفاده کردم
http://www.hamodeveloper.ir/blog/?p=38

ABZiko
پنج شنبه 21 اسفند 1393, 10:05 صبح
ممنون، دو تا سوال دارم !
1. سریالایز چیه؟
2. اینو برای کد ajax قبلیم نوشتم :


<script type="text/javascript">
$(document).ready(function (){
$('#form1').submit(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: 'initial.php',
data: $(this).serialize(),
'user':'addComment'
dataType: 'html',
success: function (data) {
alert('Hi');
}
});
});
});
</script>

ولی باز هم متاسفانه کار نمی کنه!؟
این هم HTML :


<form method='POST' action='Initial.php' id="form1">
<input type='hidden' name='userID' value="<?php echo $person['id']; ?>" />
<input type='hidden' name='firstName' value="<?php echo $person['firstName']; ?>" />
<input type='hidden' name='lastName' value="<?php echo $person['lastName']; ?>" />
<input type='hidden' name='file' value="<?php echo $person['file']; ?>" />
<input type='hidden' name='subID' value="<?php echo $thing['id']; ?>" />
<label>Please Type Your Comment :</label>
<textarea class="ckeditor" name="explanation" style="min-width: 400px;min-height: 200px"></textarea><br><br>
<script type="text/javascript">
CKEDITOR.replace( 'full_text', {
customConfig: 'CKEditor/custom/customConfig.js',
});
CKFinder.setupCKEditor(null, 'CKFinder/');
</script>
<input type='submit' class="submit" value='Submit' />
<input type='hidden' name='user' value='addComment' />
</form>

ABZiko
پنج شنبه 21 اسفند 1393, 11:01 صبح
آقا بالاخره درست شد، فقط یم سوال، چرا ajax از ckeditor پشتیبانی نمی کنه؟ وقتی textarea هست، ثبت می کنه ولی وقتی ckeditor هست، همه رو ثبت می کنه به غیر از متن؟

hamedarian2009
پنج شنبه 21 اسفند 1393, 11:25 صبح
آقا بالاخره درست شد، فقط یم سوال، چرا ajax از ckeditor پشتیبانی نمی کنه؟ وقتی textarea هست، ثبت می کنه ولی وقتی ckeditor هست، همه رو ثبت می کنه به غیر از متن؟

برای حل این مشکل باید اول این تابع رو بنویسی


<script type="text/javascript">
function CKupdate(){
for ( instance in CKEDITOR.instances )
CKEDITOR.instances[instance].updateElement();
}
</script>

بعد این تابع رو به خاصیت onClick دکمه سابمیت اضافه کن

<input onClick="CKupdate();" type="submit" value="submit">

ABZiko
پنج شنبه 21 اسفند 1393, 16:57 عصر
ممنون، درست شد، یک سوال دیگه هم داشتم، من می خوام به صورت Ajax نظرات پست هام رو بگیرم :


<?php

foreach($showComments as $show) {

?>
<div class="comment">
<img src="Uploads/<?php echo $show['file']; ?>" width="55px" height="55px" style="border-radius: 50px" />&nbsp;&nbsp;<span><?php echo $show['firstName']."&nbsp;".$show['lastName']; ?></span>
<br><br><div class="commentText"><?php echo $show['explanation']; ?></div>
</div>

<?php

}

?>


اینو چطوری می تونم به Ajax تبدیل کنم؟
ممنون

ABZiko
جمعه 22 اسفند 1393, 12:49 عصر
آقا حامد؟:لبخند:

Tarragon
جمعه 22 اسفند 1393, 13:12 عصر
آخه چرا اجکس؟
تغییر که نمی کنه و همچنین مهم هم نیست که تغییر کنه!
اجکس بار اضافه است رو سرور و پیشنهاد می شه تا جایی که می شه کمتر ازش استفاده بشه!

ABZiko
جمعه 22 اسفند 1393, 13:15 عصر
ممنون، خب بدون لود این کار می شه، یعنی ازش زیاد استفاده نکنم؟

bagherok
جمعه 22 اسفند 1393, 13:53 عصر
اجکس بار اضافه است رو سرور و پیشنهاد می شه تا جایی که می شه کمتر ازش استفاده بشه!
اتفاقا برعکس!
اگه درست استفاده بشه

ABZiko
جمعه 22 اسفند 1393, 14:21 عصر
یعنی چی درست استفاده بشه؟

ABZiko
جمعه 22 اسفند 1393, 14:37 عصر
الان این بخش PHP :


<?php
require_once('Explain.php');
foreach($showComments as $show) {

?>
<div class="comment">
<img src="Uploads/<?php echo $show['file']; ?>" width="55px" height="55px" style="border-radius: 50px" />&nbsp;&nbsp;<span><?php echo $show['firstName']."&nbsp;".$show['lastName']; ?></span>
<br><br><div class="commentText"><?php echo $show['explanation']; ?></div>
</div>

<?php

}

?>

اون صفحه Explain همون صفحه ای هست که قراره نظرات توی اون نمایش داده بشن، فقط چون به همون صفحه قبلا یک ID انتقال داده می شه، اونو فراخوانی کردم که با توجه به اون ID نظرات نمایش داده بشن.
این هم کد های Ajax :


<script>
function showUser() {

if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","AjaxComment.php",true);
xmlhttp.send();
}
</script>
<div id="txtHint"></div>

bagherok
جمعه 22 اسفند 1393, 14:56 عصر
یعنی چی درست استفاده بشه؟
خب توحالت عادی میشه تنها با یه درخواست به سمت سرور همه اطلاعات لازم رو دریافت کرد.
اما فرض کنید زمان پردازش سمت سرور کمی بیشتر از حالت عادی طول بکشه
مثلا برای بدست آوردن نظرات
خب میشه با یه درخواست به سمت سرور تمام اطلاعات لازم رو دریافت کرد و به کاربر نشون داد
البته به جز قسمت نظرات
که میشه بعد از لود کامل صفحه یه درخواست زد به سمت سرور و نظرات رو دریافت کرد(بصورت json).
اینجوری هم زمان لود صفحه کمتر میشه
به دلیل اینکه دیگه منتظر دریافت نظرات نیستیم و صفحه مورد نظر رو به کاربر نشون میدیم
بعلاوه میشه بار پردازشی رو تا کمی انداخت سمت کاربر
به اینصورت که نظرات بصورت داده های json هستند و سمت کاربر بصورت دلخواه استایل میگرنند.
و همچنین قرار هم نیست که تمام نظرات در همون درخواست اول نمایش داده بشه
مثلا با اسکرول به سمت پایین نظرات بیشتر لود میشند.
و.....

ABZiko
جمعه 22 اسفند 1393, 15:03 عصر
خب توحالت عادی میشه تنها با یه درخواست به سمت سرور همه اطلاعات لازم رو دریافت کرد.
اما فرض کنید زمان پردازش سمت سرور کمی بیشتر از حالت عادی طول بکشه
مثلا برای بدست آوردن نظرات
خب میشه با یه درخواست به سمت سرور تمام اطلاعات لازم رو دریافت کرد و به کاربر نشون داد
البته به جز قسمت نظرات
که میشه بعد از لود کامل صفحه یه درخواست زد به سمت سرور و نظرات رو دریافت کرد(بصورت json).
اینجوری هم زمان لود صفحه کمتر میشه
به دلیل اینکه دیگه منتظر دریافت نظرات نیستیم و صفحه مورد نظر رو به کاربر نشون میدیم
بعلاوه میشه بار پردازشی رو تا کمی انداخت سمت کاربر
به اینصورت که نظرات بصورت داده های json هستند و سمت کاربر بصورت دلخواه استایل میگرنند.
و همچنین قرار هم نیست که تمام نظرات در همون درخواست اول نمایش داده بشه
مثلا با اسکرول به سمت پایین نظرات بیشتر لود میشند.
و.....

ممنون، می شه همین روش رو به بنده یاد بدین؟ من می خوام همون کد نظرات رو که در 6 و 7 پست قبل گفتم به صورت Ajax یا به روشی که شما گفتین، اطلاعات رو بگیرم(از POD استفاده می کنم)
ممنون

bagherok
جمعه 22 اسفند 1393, 15:26 عصر
ممنون، می شه همین روش رو به بنده یاد بدین؟ من می خوام همون کد نظرات رو که در 6 و 7 پست قبل گفتم به صورت Ajax یا به روشی که شما گفتین، اطلاعات رو بگیرم(از POD استفاده می کنم)
ممنون
درکل اینجا ربط خاصی یه php نداره وبیشتر Ajax بازیست
(بهتره تو تاپیک خودش مطرح کنید و برای قسمت php ایش اینجا)

http://www.9lessons.info/2009/07/load-data-while-scroll-with-jquery-php.html
http://www.9lessons.info/2013/05/facebook-like-system-with-jquery-mysql.html