मुझे पता है कि यह एक गलत सवाल की तरह दिखता है लेकिन कृपया पूरी बात पढ़ें, मैं इससे फंस गया हूं।AJAX कॉल सत्र को नष्ट नहीं करता है कोई स्पष्ट कारण
function validateMessage(){
var recipient = document.getElementById("send_to").value;
var subject = document.getElementById("popup_subject").value;
var message = document.getElementById("popup_message").value;
var parameters="message="+message+"&recipient="+recipient+"&subject="+subject;
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("error_mess").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("POST","include/send_message.php",false);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
xmlhttp.send(parameters);
}
यह एक कारण के लिए तुल्यकालिक रूप में लागू किया गया है, कि इस मुद्दे को यहाँ नहीं है:
मैं अपने पृष्ठों में से एक पर एक AJAX कॉल है, यह एक गतिशील संदेश प्रणाली है। मैंने एसिंक्रोनस पर स्विच करने की कोशिश की और समस्या बनी हुई है।
यह send_message.php फ़ाइल, यह सिर्फ पोस्ट चर पकड़ लेता है और डेटाबेस में उन्हें बचाता है: (
<?php
session_start();
include('db.php');
dbConnect();
$message=$_POST['message'];
$subject=$_POST['subject'];
$recipient=$_POST['recipient'];
$result=mysql_query("select * from korisnici where username='$recipient' ") or die(mysql_error());
$row=mysql_fetch_array($result);
$num=mysql_num_rows($result);
if($recipient=="Poruka za..." || $subject=="Naslov..." || $message=="Poruka" || $recipient=="" || $subject=="" || $message=="")
echo "<p style='color:red;'>Morate popuniti sva polja.</p>";
elseif($num==0)
echo "<p style='color:red;'>Korisnik ne postoji.</p>";
else{
$prima=$row['id_user'];
$salje=$_SESSION['id_user'];
mysql_query("insert into poruke (salje, prima, naslov, poruka)
values ('$salje', '$prima', '$subject', '$message') ") or die(mysql_error());
echo "<p style='color:green;'>Poruka uspješno poslata!</p>";
}
?>
हालांकि, जब मैं $ _SESSION [ 'id_user'] चर को बचाने की कोशिश के रूप में प्रेषक) मुझे एक समस्या मिली - यह पता चला कि जब भी यह AJAX कॉल चलता है तो सत्र नष्ट हो रहा है! तो session_start()
के ठीक बाद एक खाली सरणी प्रिंट करता है।
सत्र मूल पृष्ठ पर ही जीवंत है, और यह पृष्ठ ताज़ा सत्र को जीवंत रखता है। केवल जब मैं AJAX कॉल करने के लिए बटन क्लिक करता हूं, तो सत्र गायब हो जाता है। क्या कोई इस मुद्दे को देख सकता है?
मुझे नहीं लगता कि समस्या दृश्य कोड में है। यहां कुछ भी सत्र चर को नष्ट नहीं करना चाहिए। –
मैं भी उसमें से निश्चित हूं। इसके लिए एक संभावित कारण क्या हो सकता है? पहले मुझसे कभी नहीं हुआ। मैंने जो पोस्ट किया है उसके अलावा वास्तव में कोई कोड शामिल नहीं है। मूल पृष्ठ (जिसे कॉल किया गया है) पृष्ठ की शुरुआत में session_start() को छोड़कर किसी भी सत्र सामग्री का भी उल्लेख नहीं करता है। – jovan
मैंने पहले इस तरह की समस्याएं देखी हैं, और समस्या एक गलत कॉन्फ़िगर किया गया PHP सर्वर था। सत्रों का उपयोग करते समय, मैंने ब्राउजर से संबंधित समस्याओं को भी देखा है। आप बस सुनिश्चित करने के लिए एक अलग ब्राउज़र डाउनलोड और कोशिश कर सकते हैं। यह कहीं और कुछ कोड के साथ एक समस्या भी हो सकती है। मैं यहां जो कुछ देखता हूं उससे वास्तव में नहीं कह सकता हूं। –