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




php jquery ajax (10)

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

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

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

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

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

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

यहाँ कोड है

FORM

JS/AJAX

PHP-register.php

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

JSON आउटपुट

क्रोम कंसोल:

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

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


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

 json_encode($data);

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

JSON.parse(data);

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");
            }

        });

});

यहां तक ​​कि अगर आपका 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 आउटडेटेड लेकिन फिर भी ऐसे लोगों के लिए मददगार हो सकता है जो "अनपेक्षित चरित्र" से चिपके हुए हैं।


तथ्य यह है कि चरित्र एक है <मुझे लगता है कि आपके पास एक 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);

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

मेरे पास 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}} 

मेरे पास एक ही मुद्दा है और मुझे कुछ मिला है। मैंने लाइन टिप्पणी की है:

डेटा टाइप: 'json',

उसके बाद यह सफल रहा, लेकिन ... जब मैंने कंसोल.लॉग (डेटा) किया तो इसने मुख्य index.html लौटा दिया।

इसलिए आपके पास "अप्रत्याशित टोकन <" त्रुटि है और यह पार्स नहीं कर सकता है।


इसी तरह की समस्या को हल करने के लिए खोज करने वाले खोजकर्ताओं के लाभ के लिए, आप एक समान त्रुटि प्राप्त कर सकते हैं यदि आपका इनपुट एक खाली स्ट्रिंग है।

जैसे

var d = "";
var json = JSON.parse(d);

या यदि आप AngularJS का उपयोग कर रहे हैं

var d = "";
var json = angular.fromJson(d);

क्रोम में इसका परिणाम 'अनकनेक्टेड सिन्टैक्सएक्रोम: अनपेक्षित एंड ऑफ़ इनपुट' था, लेकिन फायरबग ने इसे 'JSON.parse: JSON डेटा के लाइन 1 कॉलम 1 पर डेटा का अप्रत्याशित अंत' के रूप में दिखाया।

यकीन है कि ज्यादातर लोगों को यह नहीं पकड़ा जाएगा, लेकिन मैंने विधि की रक्षा नहीं की थी और यह इस त्रुटि के परिणामस्वरूप हुआ।


जब परिणाम सफल होता है, लेकिन आपको "<" चरित्र मिलता है, तो इसका मतलब है कि कुछ PHP त्रुटि वापस आ गई है।

यदि आप सभी संदेश देखना चाहते हैं, तो आपको परिणाम सफलता के रूप में मिल सकता है:

success: function(response){
     var out = "";
     for(var i = 0; i < response.length; i++) {
        out += response[i];
     }
     alert(out) ;
},

प्रतिक्रिया का update() अपरिवर्तनीय सहायक एक सादा पुरानी जावास्क्रिप्ट ऑब्जेक्ट का एक अद्यतन संस्करण बनाने के बिना इसे अनुकूलित किए बिना एक सुविधाजनक तरीका है।

आप इसे स्रोत ऑब्जेक्ट को अद्यतन करने के लिए देते हैं और उन ऑब्जेक्ट्स को पथों का वर्णन करने वाले ऑब्जेक्ट को जिन्हें अद्यतन करने की आवश्यकता होती है और जिन्हें बदलने की आवश्यकता होती है।

उदाहरण के लिए, यदि किसी एक्शन में id और link गुण होते हैं और आप id साथ की गई किसी आइटम में link को सरणी में लिंक करना चाहते हैं:

var update = require('react/lib/update')

// ...

return update(state, {
  items: {
    [action.id]: {
      links: {$push: action.link}
    }
  }
})

(उदाहरण action.id लिए एक ES6 गणना संपत्ति नाम का उपयोग करता है)





javascript php jquery ajax json