"SyntaxError: अप्रत्याशित टोकन <JSON में स्थिति 0 पर"


198

एक रिएक्ट एप्लिकेशन घटक में जो फेसबुक जैसी सामग्री फ़ीड को संभालता है, मैं एक त्रुटि में चल रहा हूं:

Feed.js: 94 अपरिभाषित "पारसेररोर" "सिंटैक्सएरोर: अनपेक्षित टोकन <स्थिति JSON में 0 पर

मैं एक ऐसी ही त्रुटि में भाग गया जो रेंडर फ़ंक्शन के भीतर HTML में एक टाइपो बन गया, लेकिन यहां ऐसा नहीं लगता है।

अधिक उलझन में, मैंने कोड को पहले, ज्ञात-कार्यशील संस्करण में वापस रोल किया और मुझे अभी भी त्रुटि मिल रही है।

Feed.js:

import React from 'react';

var ThreadForm = React.createClass({
  getInitialState: function () {
    return {author: '', 
            text: '', 
            included: '',
            victim: ''
            }
  },
  handleAuthorChange: function (e) {
    this.setState({author: e.target.value})
  },
  handleTextChange: function (e) {
    this.setState({text: e.target.value})
  },
  handleIncludedChange: function (e) {
    this.setState({included: e.target.value})
  },
  handleVictimChange: function (e) {
    this.setState({victim: e.target.value})
  },
  handleSubmit: function (e) {
    e.preventDefault()
    var author = this.state.author.trim()
    var text = this.state.text.trim()
    var included = this.state.included.trim()
    var victim = this.state.victim.trim()
    if (!text || !author || !included || !victim) {
      return
    }
    this.props.onThreadSubmit({author: author, 
                                text: text, 
                                included: included,
                                victim: victim
                              })
    this.setState({author: '', 
                  text: '', 
                  included: '',
                  victim: ''
                  })
  },
  render: function () {
    return (
    <form className="threadForm" onSubmit={this.handleSubmit}>
      <input
        type="text"
        placeholder="Your name"
        value={this.state.author}
        onChange={this.handleAuthorChange} />
      <input
        type="text"
        placeholder="Say something..."
        value={this.state.text}
        onChange={this.handleTextChange} />
      <input
        type="text"
        placeholder="Name your victim"
        value={this.state.victim}
        onChange={this.handleVictimChange} />
      <input
        type="text"
        placeholder="Who can see?"
        value={this.state.included}
        onChange={this.handleIncludedChange} />
      <input type="submit" value="Post" />
    </form>
    )
  }
})

var ThreadsBox = React.createClass({
  loadThreadsFromServer: function () {
    $.ajax({
      url: this.props.url,
      dataType: 'json',
      cache: false,
      success: function (data) {
        this.setState({data: data})
      }.bind(this),
      error: function (xhr, status, err) {
        console.error(this.props.url, status, err.toString())
      }.bind(this)
    })
  },
  handleThreadSubmit: function (thread) {
    var threads = this.state.data
    var newThreads = threads.concat([thread])
    this.setState({data: newThreads})
    $.ajax({
      url: this.props.url,
      dataType: 'json',
      type: 'POST',
      data: thread,
      success: function (data) {
        this.setState({data: data})
      }.bind(this),
      error: function (xhr, status, err) {
        this.setState({data: threads})
        console.error(this.props.url, status, err.toString())
      }.bind(this)
    })
  },
  getInitialState: function () {
    return {data: []}
  },
  componentDidMount: function () {
    this.loadThreadsFromServer()
    setInterval(this.loadThreadsFromServer, this.props.pollInterval)
  },
  render: function () {
    return (
    <div className="threadsBox">
      <h1>Feed</h1>
      <div>
        <ThreadForm onThreadSubmit={this.handleThreadSubmit} />
      </div>
    </div>
    )
  }
})

module.exports = ThreadsBox

Chrome डेवलपर टूल में, इस फ़ंक्शन से त्रुटि आ रही है:

 loadThreadsFromServer: function loadThreadsFromServer() {
    $.ajax({
      url: this.props.url,
      dataType: 'json',
      cache: false,
      success: function (data) {
        this.setState({ data: data });
      }.bind(this),
      error: function (xhr, status, err) {
        console.error(this.props.url, status, err.toString());
      }.bind(this)
    });
  },

console.error(this.props.url, status, err.toString()रेखांकित रेखा के साथ ।

चूंकि ऐसा लगता है कि त्रुटि सर्वर से JSON डेटा खींचने के साथ कुछ करने के लिए प्रतीत होती है, मैंने एक रिक्त db से शुरू करने की कोशिश की, लेकिन त्रुटि बनी रहती है। त्रुटि को अनंत लूप में कहा जा सकता है क्योंकि संभवतः रिएक्ट सर्वर से जुड़ने की कोशिश करता है और अंततः ब्राउज़र को क्रैश कर देता है।

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

मैंने Chrome देव टूल और Chrome REST क्लाइंट के साथ सर्वर प्रतिक्रिया की जाँच की है, और डेटा उचित JSON प्रतीत होता है।

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

ऐसा प्रतीत होता है कि यद्यपि इच्छित एपीआई एंडपॉइंट वास्तव में सही JSON डेटा और प्रारूप लौटा रहा है, लेकिन रिएक्ट http://localhost:3000/?_=1463499798727अपेक्षित के बजाय मतदान कर रहा है http://localhost:3001/api/threads

मैं बैकएंड डेटा को वापस करने के लिए पोर्ट 3001 पर चल रहे एक्सप्रेस ऐप के साथ पोर्ट 3000 पर एक वेबपैक हॉट-रीलोड सर्वर चला रहा हूं। यहाँ निराशा की बात यह है कि पिछली बार जब मैं इस पर काम कर रहा था तो यह सही ढंग से काम कर रहा था और मैं इसे तोड़ने के लिए जो संभवत: बदल सकता था वह नहीं मिला।


11
यह बताता है कि आपका "JSON" वास्तव में HTML है। सर्वर से वापस मिल रहे डेटा को देखें।
क्वेंटिन

2
यदि आप कुछ ऐसा करते हैं, तो यह त्रुटि है JSON.parse("<foo>")- एक JSON स्ट्रिंग (जिसकी आप अपेक्षा करते हैं dataType: 'json') के साथ शुरू नहीं हो सकती है <
अप्सिलर्स

जैसा कि @quantin ने कहा, यह html हो सकता है, किसी प्रकार की त्रुटि हो सकती है, कुछ बाकी ग्राहकों के साथ एक ही url
आज़माएं

जैसा मैंने उल्लेख किया है, मैंने इसे एक खाली db के साथ आज़माया (जो साधारण रूप से लौटता है]] और यह अभी भी वही त्रुटि देता है
कैमरन सिमा

आप सबसे अधिक संभावना एपीआई एपीआई अनुरोधों के आधार पर अपने पर निर्भर करता है NODE_ENV। इसे देखें: github.com/facebookincubator/create-react-app/blob/master/…
केविन सुटल

जवाबों:


147

त्रुटि संदेश का शब्द जब आप चलाते हैं तो Google Chrome से आपको मिलता है JSON.parse('<...')। मुझे पता है कि आपने कहा कि सर्वर सेट हो Content-Type:application/jsonरहा है, लेकिन मुझे विश्वास है कि प्रतिक्रिया शरीर वास्तव में HTML है।

Feed.js:94 undefined "parsererror" "SyntaxError: Unexpected token < in JSON at position 0"

console.error(this.props.url, status, err.toString())रेखांकित रेखा के साथ ।

errवास्तव में अंदर फेंक दिया गया था jQueryएक चर के रूप में है, और आप के लिए पारित किया err। कारण यह है कि लाइन को रेखांकित किया गया है, बस इसलिए कि आप इसे लॉग कर रहे हैं।

मेरा सुझाव है कि आप अपने लॉगिंग में जोड़ें। xhrप्रतिक्रिया के बारे में अधिक जानने के लिए वास्तविक (XMLHttpRequest) गुणों को देखते हुए । जोड़ने का प्रयास करें console.warn(xhr.responseText)और आपको प्राप्त होने वाले HTML को सबसे अधिक संभावना दिखाई देगी।


3
धन्यवाद, मैंने ऐसा किया और आप सही हैं - प्रतिक्रिया गलत url को प्रदूषित कर रही है और index.html की सामग्री को लौटा रही है। मैं अभी पता नहीं क्यों लगा सकता हूं।
कैमरून सिमा

8
अतिरिक्त डिबगिंग स्टेटमेंट के लिए धन्यवाद, हालांकि मुझे उपयोग करने की आवश्यकता थी console.warn(jqxhr.responseText)। मेरी समस्या के निदान में यह बहुत मददगार था।
user2441511

@ Mimi314159, console.log, console.warnऔर console.errorअपने कंसोल के लिए सभी लिखेंगे। हालाँकि, कंसोल आमतौर पर लॉगिंग फ़िल्टर विकल्प प्रदान करेगा, इसलिए सुनिश्चित करें कि वे सक्षम या अक्षम हैं जैसे आप पसंद करते हैं।
ब्रायन फील्ड

1
मेरे मामले में, एक PHP त्रुटि उत्पन्न हो रही थी जिसके कारण सर्वर वैध JSON के बजाय HTML को वापस लौटा रहा था।
डेरेक एस

53

आप HTML (या XML) सर्वर से वापस प्राप्त कर रहे हैं, लेकिन dataType: jsonJSON को JSON के रूप में पार्स करने के लिए कह रहा है। सर्वर की प्रतिक्रिया की सामग्री देखने के लिए क्रोम देव उपकरणों में "नेटवर्क" टैब की जाँच करें।


मैंने जाँच की, और यह ठीक से स्वरूपित जौन को लौटता हुआ प्रतीत होता है। यहां प्रतिक्रिया हैडर है: एक्सेस-कंट्रोल-अलाउंस-ओरिजिन: * कैश-कंट्रोल: नो-कैश कंटेंट-लेंथ: 2487 कंटेंट-टाइप: एप्लीकेशन / जसन; charset = utf-8 दिनांक: मंगल, 17 मई 2016 15:34:00 GMT ETag: W / "9b7-yi1 / G0RRpr0DlOVc9u7cMw" एक्स-पावर्ड-बाय-एक्सप्रेस: ​​एक्सप्रेस
कैमरन सिमा

1
@AVI मेरा मानना ​​है कि आपको अपने संसाधन वर्ग में MIME प्रकार निर्दिष्ट करना होगा। (जैसे)@Produces(MediaType.APPLICATION_JSON)
डीजे

10

यह मेरे लिए एक अनुमति समस्या होने के कारण समाप्त हुआ। मैं एक url का उपयोग करने की कोशिश कर रहा था, जिसमें कैनकन के लिए प्राधिकरण नहीं था, इसलिए यूआरएल को स्विच किया गया था users/sign_in। पुनर्निर्देशित url html का जवाब देता है, न कि json का। एक html प्रतिक्रिया में पहला चरित्र है <


और जब आप प्रतिक्रिया के रूप में एक HTML प्राप्त करते हैं .. तो आप इस HTML को कैसे पुनर्निर्देशित कर सकते हैं? धन्यवाद।
जुमोगर

1
मैं एक ही था, हालांकि ASP.NET MVC में। अन्य नेटर्स के लिए, मैं अपनी कार्रवाई को [AllowAnonymous] विशेषता के साथ सजाने के लिए भूल गया था इसलिए फ्रेमवर्क मुझे HTML में अनधिकृत त्रुटि को वापस करने की कोशिश कर रहा था जो मेरे AJAX कॉल को क्रैश कर रहा था।
जेसन मार्सेल

8

मैंने इस त्रुटि का अनुभव किया "सिंटैक्सएरोर: अनजाने टोकन एम इन जेन्सन एट पोजीशन", जहां टोकन 'एम' कोई अन्य वर्ण हो सकता है।

यह पता चला कि मैं JSON ऑब्जेक्ट में दोहरे उद्धरण चिह्नों में से एक को याद कर रहा था, जब मैं DB टेस्ट के लिए RESTconsole का उपयोग कर रहा था, जैसा कि {"name:" math "}, सही वाला {{name": "math"} होना चाहिए।

इस अनाड़ी गलती का पता लगाने के लिए मुझे बहुत प्रयास करना पड़ा। मुझे डर है कि दूसरे भी इसी तरह के बमर में भाग लेंगे।


5

मेरे मामले में, मुझे यह रनिंग वेबपैक मिल रहा था, और स्थानीय नोड_मॉड्यूल्स डायर में कहीं न कहीं यह भ्रष्टाचार था।

rm -rf node_modules
npm install

... इसे फिर से काम करने के लिए पर्याप्त था।


1
इसके साथ ही, मैंने पैकेज-लॉक.जसन को हटाने की कोशिश की। फिर इसने मेरे लिए काम किया।
महेश

3

मेरे मामले में त्रुटि एक चर में मेरी वापसी के मूल्य को निर्दिष्ट नहीं करने का एक परिणाम था। निम्नलिखित त्रुटि संदेश का कारण बना:

return new JavaScriptSerializer().Serialize("hello");

मैंने इसे बदल दिया:

string H = "hello";
return new JavaScriptSerializer().Serialize(H);

चर के बिना JSON डेटा को ठीक से प्रारूपित करने में असमर्थ है।


3

यह त्रुटि तब होती है जब आप प्रतिक्रिया को परिभाषित करते application/jsonहैं और आपको प्रतिक्रिया के रूप में HTML मिल रहा है। असल में, यह तब हुआ जब आप JSON की प्रतिक्रिया के साथ विशिष्ट url के लिए सर्वर साइड स्क्रिप्ट लिख रहे हैं, लेकिन त्रुटि प्रारूप HTML में है।




1

मैं एक ट्यूटोरियल के बाद एक ही त्रुटि संदेश था। हमारा मुद्दा 'url: this.props.url' अजाक्स कॉल में लगता है। React.DOM में जब आप अपना तत्व बना रहे होते हैं, तो मेरा ऐसा दिखता है।

ReactDOM.render(
    <CommentBox data="/api/comments" pollInterval={2000}/>,
    document.getElementById('content')
);

खैर, इस कमेंटबॉक्स में अपने प्रॉप्स में एक यूआरएल नहीं है, बस डेटा है। जब मैंने स्विच किया url: this.props.url-> url: this.props.data, तो इसने सर्वर पर सही कॉल किया और मुझे अपेक्षित डेटा वापस मिल गया।

मुझे उम्मीद है यह मदद करेगा।


1

मेरी समस्या यह थी कि मुझे डेटा वापस मिल रहा था stringजो कि उचित JSON प्रारूप में नहीं था, जिसे मैं तब पार्स करने की कोशिश कर रहा था। simple example: JSON.parse('{hello there}')h पर त्रुटि देगा। मेरे मामले में कॉलबैक यूआरएल वस्तुओं से पहले एक अनावश्यक चरित्र लौटा employee_names([{"name":....रही थी : और ई में त्रुटि हो रही थी। 0. मेरे कॉलबैक URL में एक समस्या थी जो तय होने पर, केवल ऑब्जेक्ट लौटाता था ।


1

मेरे मामले में, एक एज़्यूर होस्टेड एंगुलर 2/4 साइट के लिए, मेरा एपीआई कॉल mySite / api / ... mySite रूटिंग मुद्दों के कारण पुनर्निर्देशित कर रहा था। इसलिए, यह एपीआई JSON के बजाय पुनर्निर्देशित पृष्ठ से HTML लौटा रहा था। मैंने एपीआई पथ के लिए एक web.config फ़ाइल में एक बहिष्करण जोड़ा।

स्थानीय रूप से विकसित होने के दौरान मुझे यह त्रुटि नहीं मिल रही थी क्योंकि साइट और एपीआई विभिन्न बंदरगाहों पर थे। ऐसा करने का एक बेहतर तरीका शायद है ... लेकिन यह काम कर गया।

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
    <system.webServer>
        <rewrite>
        <rules>
        <clear />

        <!-- ignore static files -->
        <rule name="AngularJS Conditions" stopProcessing="true">
        <match url="(app/.*|css/.*|fonts/.*|assets/.*|images/.*|js/.*|api/.*)" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
        <action type="None" />
        </rule>

        <!--remaining all other url's point to index.html file -->
        <rule name="AngularJS Wildcard" enabled="true">
        <match url="(.*)" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
        <action type="Rewrite" url="index.html" />
        </rule>

        </rules>
        </rewrite>
    </system.webServer>
</configuration>

1

यह पुराना हो सकता है। लेकिन, यह सिर्फ कोणीय में हुआ, मेरे कोड में अनुरोध और प्रतिक्रिया के लिए सामग्री प्रकार अलग थे। तो, के लिए हेडर की जाँच करें,

 let headers = new Headers({
        'Content-Type': 'application/json',
        **Accept**: 'application/json'
    });

अभिक्रिया में

axios({
  method:'get',
  url:'http://  ',
 headers: {
         'Content-Type': 'application/json',
        Accept: 'application/json'
    },
  responseType:'json'
})

jQuery के अजाक्स:

 $.ajax({
      url: this.props.url,
      dataType: 'json',
**headers: { 
          'Content-Type': 'application/json',
        Accept: 'application/json'
    },**
      cache: false,
      success: function (data) {
        this.setState({ data: data });
      }.bind(this),
      error: function (xhr, status, err) {
        console.error(this.props.url, status, err.toString());
      }.bind(this)
    });
  },

1

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

var string = "some string";
JSON.parse(string)

कहकर एक त्रुटि फेंक देंगे

बिना पढ़ा हुआ वाक्य-विन्यास: स्थिति 0 में JSON में अप्रत्याशित टोकन s

क्योंकि, यह पहला चरित्र stringहै sऔर अब यह एक वैध JSON नहीं है। यह बीच में भी त्रुटि फेंक सकता है। पसंद:

var invalidJSON= '{"foo" : "bar", "missedquotehere : "value" }';
JSON.parse(invalidJSON)

त्रुटि फेंकेंगे:

VM598:1 Uncaught SyntaxError: Unexpected token v in JSON at position 36

क्योंकि हमने जानबूझकर invalidJSON36 की स्थिति में JSON स्ट्रिंग में एक उद्धरण याद किया ।

और अगर आप इसे ठीक करते हैं:

var validJSON= '{"foo" : "bar", "missedquotehere : "value" }';
JSON.parse(validJSON)

आपको JSON में एक ऑब्जेक्ट देगा।

अब, इस त्रुटि को किसी भी जगह और किसी भी ढांचे / पुस्तकालय में फेंक दिया जा सकता है। अधिकांश समय आप एक नेटवर्क प्रतिक्रिया पढ़ रहे होंगे जो JSON मान्य नहीं है। तो इस मुद्दे को डीबग करने के चरण निम्नानुसार हो सकते हैं:

  1. curl या आपके द्वारा कॉल किए जा रहे वास्तविक API को हिट करें।
  2. प्रतिक्रिया को लॉग / कॉपी करें और इसे पार्स करने का प्रयास करें JSON.parse। यदि आपको त्रुटि हो रही है, तो उसे ठीक करें।
  3. यदि नहीं, तो सुनिश्चित करें कि आपका कोड मूल प्रतिक्रिया को परिवर्तित / परिवर्तित नहीं कर रहा है।

0

इसके साथ बहुत समय बिताने के बाद, मुझे पता चला कि मेरे मामले में समस्या मेरे पैकेज पर "होमपेज" से परिभाषित हो रही थी। जसन फ़ाइल ने मेरे ऐप को फायरबेस (समान 'टोकन' त्रुटि) पर काम नहीं किया। मैंने अपना रिएक्शन ऐप क्रिएट-रिएक्शन-ऐप का उपयोग करके बनाया, फिर मैंने जीआईटीयूबी पेजों पर तैनात करने के लिए READ.me फ़ाइल पर फायरबेस गाइड का उपयोग किया, मुझे एहसास हुआ कि मुझे राउटर के लिए अतिरिक्त काम करना था, और फायरबेस पर स्विच किया। github गाइड ने package.json पर मुखपृष्ठ कुंजी को जोड़ा था और तैनाती समस्या का कारण बना।


0

Protip: एक स्थानीय Node.js सर्वर पर json का परीक्षण? सुनिश्चित करें कि आपके पास पहले से ही उस रास्ते पर कुछ रूटिंग नहीं है

'/:url(app|assets|stuff|etc)';

0

एक सामान्य स्तर पर यह त्रुटि तब होती है जब एक JSON ऑब्जेक्ट पार्स होता है जिसमें इसमें सिंटैक्स त्रुटियां होती हैं। कुछ इस तरह से सोचें, जहां संदेश संपत्ति में दोहरे उद्धरण चिह्नों का समावेश है:

{
    "data": [{
        "code": "1",
        "message": "This message has "unescaped" quotes, which is a JSON syntax error."
    }]
}

अगर आपके पास कहीं JSON है तो इसे JSONLint के माध्यम से चलाने के लिए यह सत्यापित करना अच्छा है कि इसमें सिंटैक्स त्रुटि नहीं है। हालांकि मेरे अनुभव में ऐसा नहीं है, लेकिन आमतौर पर JSON एक एपीआई से वापस आ जाता है जो अपराधी है।

जब एक एक्सएचआर अनुरोध HTTP API से किया जाता है Content-Type:application/json; charset=UTF-8जो एक शीर्ष लेख के साथ प्रतिक्रिया देता है जिसमें प्रतिक्रिया JSON में अमान्य JSON होता है जिसे आप यह त्रुटि देखेंगे।

यदि सर्वर-साइड एपीआई नियंत्रक अनुचित रूप से एक सिंटैक्स त्रुटि को संभाल रहा है, और इसे प्रतिक्रिया के हिस्से के रूप में प्रिंट किया जा रहा है, जो कि JSON की संरचना को तोड़ देगा। इसका एक अच्छा उदाहरण एपीआई प्रतिक्रिया होगा जिसमें PHP चेतावनी या प्रतिक्रिया निकाय में सूचना होगी:

<b>Notice</b>:  Undefined variable: something in <b>/path/to/some-api-controller.php</b> on line <b>99</b><br />
{
    "success": false,
    "data": [{ ... }]
}

95% यह मेरे लिए इस मुद्दे का स्रोत है, और हालांकि यह कुछ हद तक यहाँ अन्य प्रतिक्रियाओं में संबोधित किया गया है मुझे नहीं लगता कि यह स्पष्ट रूप से वर्णित किया गया था। उम्मीद है कि यह मदद करता है, यदि आप एक आसान तरीका खोज रहे हैं जिससे यह पता चले कि एपीआई प्रतिक्रिया में JSON सिंटैक्स त्रुटि है जो मैंने उसके लिए एक कोणीय मॉड्यूल लिखी है

यहाँ मॉड्यूल है:

/**
 * Track Incomplete XHR Requests
 * 
 * Extend httpInterceptor to track XHR completions and keep a queue 
 * of our HTTP requests in order to find if any are incomplete or 
 * never finish, usually this is the source  of the issue if it's 
 * XHR related
 */
angular.module( "xhrErrorTracking", [
        'ng',
        'ngResource'
    ] )
    .factory( 'xhrErrorTracking', [ '$q', function( $q ) {
        var currentResponse = false;

        return {
            response: function( response ) {
                currentResponse = response;
                return response || $q.when( response );
            },
            responseError: function( rejection ) {
                var requestDesc = currentResponse.config.method + ' ' + currentResponse.config.url;
                if ( currentResponse.config.params ) requestDesc += ' ' + JSON.stringify( currentResponse.config.params );

                console.warn( 'JSON Errors Found in XHR Response: ' + requestDesc, currentResponse );

                return $q.reject( rejection );
            }
        };
    } ] )
    .config( [ '$httpProvider', function( $httpProvider ) {
        $httpProvider.interceptors.push( 'xhrErrorTracking' );
    } ] );

अधिक जानकारी ऊपर उल्लिखित ब्लॉग लेख में पाई जा सकती है, मैंने वहां पाया गया सब कुछ पोस्ट नहीं किया है क्योंकि यह संभवतः सभी प्रासंगिक नहीं है।


0

मेरे लिए, यह तब हुआ जब जेन्स के रूप में वापस आ रही वस्तु पर गुणों में से एक को मैंने अपवाद के रूप में फेंक दिया।

public Dictionary<string, int> Clients { get; set; }
public int CRCount
{
    get
    {
        var count = 0;
        //throws when Clients is null
        foreach (var c in Clients) {
            count += c.Value;
        }
        return count;
    }
}

एक अशक्त जांच को जोड़ने, यह मेरे लिए तय:

public Dictionary<string, int> Clients { get; set; }
public int CRCount
{
    get
    {
        var count = 0;
        if (Clients != null) {
            foreach (var c in Clients) {
                count += c.Value;
            }
        }
        return count;
    }
}

0

सिर्फ जाँच करने के लिए कुछ बुनियादी, सुनिश्चित करें कि आप कुछ भी नहीं है json फ़ाइल में टिप्पणी की है

//comments here will not be parsed and throw error

0

बस उत्तरों में जोड़ने के लिए, यह तब भी होता है जब आपकी एपीआई प्रतिक्रिया शामिल होती है

<?php{username: 'Some'}

जो तब हो सकता है जब आपका बैकएंड PHP का उपयोग कर रहा हो।


0

अजगर में आप html टेम्पलेट का परिणाम भेजने से पहले json.Dump (str) का उपयोग कर सकते हैं। इस कमांड स्ट्रिंग के साथ json फॉर्मेट को सही और html टेम्पलेट में भेजें। इस परिणाम को JSON.parse (परिणाम) पर भेजने के बाद, यह सही प्रतिक्रिया है और आप इसका उपयोग कर सकते हैं।


0

कुछ के लिए, यह आप लोगों की मदद कर सकता है: मुझे Wordpress REST API के साथ एक समान अनुभव था। मैंने यह भी जाँचने के लिए पोस्टमैन का उपयोग किया कि क्या मेरे पास सही मार्ग या समापन बिंदु है। मुझे बाद में पता चला कि मैंने गलती से अपनी स्क्रिप्ट के अंदर एक "इको" डाल दिया है - हुक:

डीबग करें और अपने कंसोल की जाँच करें

त्रुटि का कारण

तो मूल रूप से, इसका मतलब है कि मैंने एक मान छापा है जो JSON नहीं है जो कि स्क्रिप्ट के साथ मिलाया गया है जो AJAX त्रुटि का कारण बनता है - "सिंटैक्सएरोर: स्थिति 0 पर JSON में अप्रत्याशित टोकन r"


0

यह आपके जावास्क्रिप्ट कोड के कारण हो सकता है कि कुछ json प्रतिसाद देख रहा है और आपको पाठ जैसा कुछ और प्राप्त हुआ है।


1
कृपया एक लाइनर देने के बजाय उत्तर देते समय विस्तृत करें, जब तक कि वे एकमुश्त उत्तर नहीं देते। स्पष्टीकरण उत्तर-चाहने वालों को समाधान को बेहतर ढंग से समझने में मदद करेगा।
राय

0

मुझे वही समस्या हो रही थी। मैं एक सरल नोड का उपयोग कर रहा हूं। जेएस सर्वर को कोणीय 7 में बनाए गए ग्राहक को प्रतिक्रिया भेजने के लिए। शुरू में मैं प्रतिक्रिया भेज रहा था। ('नोडज सर्वर से हैलो दुनिया'); ग्राहक लेकिन किसी तरह कोणीय इसे पार्स करने में असमर्थ था।


0

जो create-react-appस्थानीय जोंस फाइलों को लाने और उपयोग करने की कोशिश कर रहे हैं ।

के रूप में create-react-app, webpack-dev-serverअनुरोध को संभालने के लिए उपयोग किया जाता है और प्रत्येक अनुरोध के लिए यह कार्य करता है index.html। तो तुम पा रहे हो

SyntaxError: JSON में 0 पर अप्रत्याशित टोकन <।

इसे हल करने के लिए, आपको एप्लिकेशन को अस्वीकार करने और webpack-dev-serverकॉन्फ़िगरेशन फ़ाइल को संशोधित करने की आवश्यकता है।

आप यहां से चरणों का पालन कर सकते हैं


0

मेरे मामले में (बैकएंड), मैं res.send (टोकन) का उपयोग कर रहा था;

जब मैंने res.send (डेटा) में परिवर्तन किया तो सब कुछ ठीक हो गया;

यदि आप सब कुछ काम कर रहे हैं और पोस्ट करना चाहते हैं, तो आप इसे जांचना चाहते हैं, लेकिन त्रुटि आपके सामने के छोर पर पॉप अप करती रहती है।


0

इस त्रुटि के लिए संभावनाएं भारी हैं।

मेरे मामले में, मैंने पाया है कि इस मुद्दे को जोड़ने था homepageमें दायर package.jsonसमस्या के कारण।

वर्थ चेकिंग: package.jsonचेंज में:

homepage: "www.example.com"

सेवा

hompage: ""   

-2

अगर कोई और मोज़िला में वेब एपीआई पर "फ़ॉन्चिंग फ़ॉच" प्रलेखन से भ्रूण का उपयोग कर रहा है: (यह वास्तव में उपयोगी है: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API-Using_Fetch )

  fetch(api_url + '/database', {
    method: 'POST', // or 'PUT'
    headers: {
     'Content-Type': 'application/json'
    },
    body: qrdata //notice that it is not qr but qrdata
  })
  .then((response) => response.json())
  .then((data) => {
    console.log('Success:', data);
  })  
  .catch((error) => {
  console.error('Error:', error);  });

यह फंक्शन के अंदर था:

async function postQRData(qr) {

  let qrdata = qr; //this was added to fix it!
  //then fetch was here
}

मैं अपने कार्य में गुजर रहा था qrजिसे मैं एक वस्तु मानता था क्योंकि qrइस तरह दिखता था: {"name": "Jade", "lname": "Bet", "pet":"cat"}लेकिन मुझे वाक्यविन्यास त्रुटियां मिलती रहीं। जब मैंने इसे कुछ और सौंपा: let qrdata = qr;यह काम किया।


-7

अप्रत्याशित टोकन <स्थिति JSON में 0 पर

इस त्रुटि का एक सरल समाधान styles.lessफ़ाइल में एक टिप्पणी लिखना है ।


48
यह सबसे विचित्र जवाबों में से एक है जो मैंने कभी स्टैकओवरफ्लो पर देखा है।
केविन लेरी

नमस्ते! टिप्पणी पोस्ट करते समय, सुनिश्चित करें कि यह पूरी तरह से पूछे जाने वाले वास्तविक प्रश्न पर लागू है। आपका उत्तर बेहतर हो सकता है यदि आप हमें बताएं कि किसी styles.lessफ़ाइल में टिप्पणियां लिखना संभवतः हल क्यों कर सकता है जो बैक-एंड सर्वर कोड समस्या प्रतीत होती है।
एंड्रयू ग्रे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.