javascript - SyntaxError: JSON.parse: JSON डेटा के लाइन 1 कॉलम 1 पर अप्रत्याशित चरित्र




php jquery (8)

AJAX कॉल पर NodeJS के साथ JSON डेटा भेजना:

$.ajax({
    url: '/listClientsNames',
    type: 'POST',
    dataType: 'json',
    data: JSON.stringify({foo:'bar'})
}).done(function(response){
    console.log("response :: "+response[0].nom);
});

सफेद जगहों को हटाने के बारे में जागरूक रहें।

app.post("/listClientsNames", function(req,res){

        var querySQL = "SELECT id, nom FROM clients";   
        var data = new Array();

        var execQuery = connection.query(querySQL, function(err, rows, fields){

            if(!err){
                for(var i=0; i<25; i++){
                    data.push({"nom":rows[i].nom});         
                }
                res.contentType('application/json');
                res.json(data); 
            }else{  
                console.log("[SQL005] - Une erreur est survenue");
            }

        });

});

मैंने अपने कोड में खोजने के लिए एक अपवाद या एक विशेष चरित्र खोजने के लिए 6 घंटे से अधिक का समय बिताया है, लेकिन मैं नहीं कर सका। मैंने यहां हर समान संदेशों की जांच की।

मैं भव्य पॉपअप के साथ फ़ॉर्म भेज रहा हूं। सबसे पहले मैं अपने फॉर्म को खोलने के लिए इनलाइन पॉपअप का उपयोग कर रहा हूं, क्योंकि मैं सभी इनपुट्स को मुख्य करने के लिए भेज रहा हूं।

इसलिए, मुझे सिर्फ तीसरी आंख की जरूरत है।

मुझे मिल गया है: index.html , register.php , main.js

यहाँ कोड है

FORM

JS/AJAX

PHP-register.php

यहाँ त्रुटि संदेश जाता है

JSON आउटपुट

क्रोम कंसोल:

फ़ायरफ़ॉक्स कंसोल:

मैं क्या खो रहा हूँ?


इसका अप्रासंगिक उत्तर हो सकता है लेकिन मेरे मामले में इसका काम करना ... नहीं जानता कि मेरे सर्वर पर क्या गलत था ... मैं सिर्फ Ubuntu 16.04 सर्वर पर त्रुटि लॉग को सक्षम करता हूं।

//For PHP
error_reporting(E_ALL);
ini_set('display_errors', 1);

कुछ मामलों में डेटा को JSON फॉर्मेट में एनकोड नहीं किया गया था, इसलिए आपको पहले इसे एनकोड करना होगा

 json_encode($data);

बाद में आप अपने JS में json Parse का उपयोग करेंगे, जैसे

JSON.parse(data);

क्या आप वाकई url फ़ील्ड में गलत पथ का उपयोग नहीं कर रहे हैं? - मैं एक ही त्रुटि का सामना कर रहा था, और समस्या का हल होने के बाद मैंने पथ की जांच की, इसे गलत पाया और इसे सही स्थान से बदल दिया।

सुनिश्चित करें कि आप जिस URL को निर्दिष्ट कर रहे हैं, वह AJAX अनुरोध के लिए सही है और फ़ाइल मौजूद है।


डेटा प्रकार को टेक्स्ट में बदलने से डेटा टाइप में मदद मिली: 'टेक्स्ट'

मेरे पास JSONlint के साथ जांच है और मेरा json प्रारूप उचित था। जब मैं dataType: 'json' सेट करता था तब भी यह त्रुटि फेंक रहा था dataType: 'json'

JSON Data: {"eventinvite":1,"groupcount":8,"totalMessagesUnread":0,"unreadmessages":{"378":0,"379":0,"380":0,"385":0,"390":0,"393":0,"413":0,"418":0}} 

तथ्य यह है कि चरित्र एक है <मुझे लगता है कि आपके पास एक PHP त्रुटि है, क्या आपने सभी त्रुटियों को प्रतिध्वनित करने की कोशिश की है।

चूंकि मेरे पास आपका डेटाबेस नहीं है, इसलिए मैं आपके कोड के माध्यम से जा रहा हूं, त्रुटियों को खोजने की कोशिश कर रहा हूं, अब तक, मैंने आपकी JS फाइल को अपडेट किया है

$("#register-form").submit(function (event) {

    var entrance = $(this).find('input[name="IsValid"]').val();
    var password = $(this).find('input[name="objPassword"]').val();
    var namesurname = $(this).find('input[name="objNameSurname"]').val();
    var email = $(this).find('input[name="objEmail"]').val();
    var gsm = $(this).find('input[name="objGsm"]').val();
    var adres = $(this).find('input[name="objAddress"]').val();
    var termsOk = $(this).find('input[name="objAcceptTerms"]').val();

    var formURL = $(this).attr("action");


    if (request) {
        request.abort(); // cancel if any process on pending
    }

    var postData = {
        "objAskGrant": entrance,
        "objPass": password,
        "objNameSurname": namesurname,
        "objEmail": email,
        "objGsm": parseInt(gsm),
        "objAdres": adres,
        "objTerms": termsOk
    };

    $.post(formURL,postData,function(data,status){
        console.log("Data: " + data + "\nStatus: " + status);
    });

    event.preventDefault();
});

PHP संपादित करें:

 if (isset($_POST)) {

    $fValid = clear($_POST['objAskGrant']);
    $fTerms = clear($_POST['objTerms']);

    if ($fValid) {
        $fPass = clear($_POST['objPass']);
        $fNameSurname = clear($_POST['objNameSurname']);
        $fMail = clear($_POST['objEmail']);
        $fGsm = clear(int($_POST['objGsm']));
        $fAddress = clear($_POST['objAdres']);
        $UserIpAddress = "hidden";
        $UserCityLocation = "hidden";
        $UserCountry = "hidden";

        $DateTime = new DateTime();
        $result = $date->format('d-m-Y-H:i:s');
        $krr = explode('-', $result);
        $resultDateTime = implode("", $krr);

        $data = array('error' => 'Yükleme Sırasında Hata Oluştu');

        $kayit = "INSERT INTO tbl_Records(UserNameSurname, UserMail, UserGsm, UserAddress, DateAdded, UserIp, UserCityLocation, UserCountry, IsChecked, GivenPasscode) VALUES ('$fNameSurname', '$fMail', '$fGsm', '$fAddress', '$resultDateTime', '$UserIpAddress', '$UserCityLocation', '$UserCountry', '$fTerms', '$fPass')";
        $retval = mysql_query( $kayit, $conn ); // Update with you connection details
            if ($retval) {
                $data = array('success' => 'Register Completed', 'postData' => $_POST);
            }

        } // valid ends
    }echo json_encode($data);

यहां तक ​​कि अगर आपका JSON ठीक है तो यह DB charset (UTF8) समस्या हो सकती है। यदि आपके DB का charset / collation UTF8 है, लेकिन PDO ठीक से सेट नहीं किया गया है (charset / वर्कअराउंड मिसिंग) आपके DB में कुछ à / è / ò / ì / आदि आपके JSON एन्कोडिंग को तोड़ सकता है (अभी भी एन्कोडेड है, लेकिन समस्या का कारण बनता है)। अपने कनेक्शन स्ट्रिंग की जाँच करें, यह इनमें से एक के समान होना चाहिए:

$pdo = new PDO('mysql:host=hostname;dbname=DBname;**charset=utf8**','username','password'); // PHP >= 5.3.6

$pdo = new PDO('mysql:host=hostname;dbname=DBname','username','password',**array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")**); // older versions

PS आउटडेटेड लेकिन फिर भी ऐसे लोगों के लिए मददगार हो सकता है जो "अनपेक्षित चरित्र" से चिपके हुए हैं।


हटाना

 dataType: 'json'

इसके साथ बदल रहा है

 dataType: 'text'




json