मुझे लगता है कि आप जिस JSON की अपेक्षा कर रहे हैं, उसके बजाय आपका PHP एक त्रुटि लौटा रहा है। चूंकि आपके पास dataType: 'json'
. है , jQuery प्रतिक्रिया को पार्स करने का प्रयास करता है, लेकिन विफल रहता है। जब ऐसा होता है, तो jQuery success
को कॉल नहीं करता है कॉलबैक।
यदि आप कर सकते हैं, तो फ़ायरबग का उपयोग यह देखने के लिए करें कि अजाक्स कॉल द्वारा क्या लौटाया जा रहा है। दूसरा तरीका अस्थायी रूप से dataType: 'html'
. में बदलना होगा और फिर अपनी success
बदलें को कॉलबैक:
success: function(msg) { alert(msg); }
उम्मीद है कि जब आप देखते हैं कि संदेश वापस आ रहा है, तो यह समस्या की पहचान करने में मदद करेगा। हालांकि एक चीज जो आपको करनी चाहिए, वह उन मामलों को संभालने के लिए कोड जोड़ना है जहां क्वेरी निष्पादित करने में विफल रहती है और जहां डेटाबेस से कोई पंक्ति नहीं लाई जाती है। आप PHP फ़ाइल में निम्न कोड जोड़ सकते हैं:
$result = mysql_query($query, $con);
if (!$result) {
die('Could not run query: ' . mysql_error($con));
}
if (mysql_num_rows($result) < 1) {
echo 'null';
exit;
}
$data = mysql_fetch_row($result);
हालांकि अजाक्स कॉल के साथ कुछ समस्याएं भी हैं:
(1) आप निर्दिष्ट कर रहे हैं contentType: "application/json; charset=utf-8"
, लेकिन फिर आप JSON नहीं भेज रहे हैं। आपको कुछ इस तरह करना चाहिए:
data: JSON.stringify({}),
लेकिन अगर आप ऐसा करते हैं, तो आप $_POST
. का उपयोग करके सर्वर पर डेटा प्राप्त नहीं कर सकते हैं समारोह। इसलिए, आप contentType
. से छुटकारा पाना चाह सकते हैं इसके बजाय सेटिंग। इसे देखें SO उत्तर
अधिक जानकारी के लिए।
(2) जब आप dataType: 'json'
specify निर्दिष्ट करते हैं , JQuery सफलता कॉलबैक को कॉल करने से पहले किसी ऑब्जेक्ट की प्रतिक्रिया को पार्स करेगा, इसलिए msg
पैरामीटर पहले से ही एक वस्तु होना चाहिए। इसलिए, आपको JSON.parse(msg)
. पर कॉल नहीं करना चाहिए ।
(3) आप PHP फ़ाइल से एक सहयोगी सरणी लौटा रहे हैं। वह एक जावास्क्रिप्ट ऑब्जेक्ट में परिवर्तित हो जाएगा, एक सरणी नहीं।
मुझे लगता है कि आपको निम्न कोशिश करनी चाहिए:
$.ajax('refreshData.php', {
type: 'post',
dataType: 'json',
data: { },
cache: false,
success: function (data) {
if (data) {
$('#interface_stats').html('Fatigue: ' + data.fatigue);
}
}
});