मैं अपने फ्रंट एंड ऐप में PHP json_encode द्वारा बनाए गए जेसन डेटा को पार्स करना चाहता हूं, मैं यह नहीं कर सकता:

var data= '<?php echo $jsonarr; ?>';

जैसा कि यह एक कॉर्डोवा ऐप है। यहाँ मेरा PHP कोड है:

 <?php
 $arr_login= array("lname"=>"$rowlname","email"=>"$rowemail","fname"=>"$rowfname","mobile"=>"$rowmobile");
  echo json_encode($arr_login);
 ?>

मेरा अजाक्स कोड:

   $.ajax({
   type:"POST",
   url: url,
   data:data,
   success: function(data){
   var res = $.trim(data);
   if (res == "Password is inccorrect" || res== "Email is inccorrect") {
    $("#errmsg").html(data);
   }
     else{
     var response= JSON.parse(data);
     alert(response);
     //window.open("dashboard.html?sess=logined&","_self");

     }
 }

     });

अब अगर मैं डेटा को अलर्ट करता हूं तो यह मुझे PHP द्वारा भेजे गए वैध JSON प्रारूप देता है, लेकिन मुझे इसे जावास्क्रिप्ट ऑब्जेक्ट में कनवर्ट करने की आवश्यकता है ताकि मैं इसे DOM में उपयोग कर सकूं लेकिन JSON.parse कंसोल में यह त्रुटि देता है:

 VM236:14 Uncaught SyntaxError: Unexpected token / in JSON at position 147
0
GeniusGeek 30 अप्रैल 2020, 20:26
1
कंसोल.लॉग (डेटा) आपको क्या दिखाता है? मेरा मतलब है कच्ची प्रतिक्रिया, पार्सिंग से पहले।
 – 
vitkarpov
30 अप्रैल 2020, 20:34
1
क्या आप कृपया कंसोल.लॉग प्रतिक्रिया दें और एपीआई प्रतिक्रिया साझा करें?
 – 
Hamza Arshad
30 अप्रैल 2020, 20:35
धन्यवाद @vitkarpov यह मेरी मदद करता है, कंसोल दो दिखाता है?> वह है?>?> मैंने इसे अपने PHP कोड में दो बार टाइप किया जिससे JSON डेटा एक अमान्य प्रारूप बन गया। इसे पहले ही ठीक कर दिया है धन्यवाद :)
 – 
GeniusGeek
30 अप्रैल 2020, 21:20

2 जवाब

var response = JSON.parse(JSON.stringify(data));
1
Anik Anwar 30 अप्रैल 2020, 21:08
क्या यह इसे एक स्ट्रिंग में नहीं बदलेगा ?, जावास्क्रिप्ट ऑब्जेक्ट की आवश्यकता क्या है। किसी भी तरह से इस मुद्दे को हल किया गया, त्रुटि PHP कोड में पार्स सिंटैक्स थी जिसमें से यह दोगुना था?> फ़ाइल के अंत में?
 – 
GeniusGeek
30 अप्रैल 2020, 21:22

आप सभी जेसन वेरिएबल को अलर्ट क्यों करते हैं जो निश्चित रूप से एक वस्तु है? मैंने आपकी प्रक्रिया का अनुकरण किया है, क्योंकि @Anik अनवर का उल्लेख JSON.stringify समाधान है

    <?php

        $rowlname = "row";
        $rowemail = "email";
        $rowfname = "rowfname";
        $rowmobile = "rowmobile";

        $arr_login= array("lname"=>"$rowlname","email"=>"$rowemail","fname"=>"$rowfname","mobile"=>"$rowmobile");
        $jsonarr = json_encode($arr_login);

    ?>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>


    <script src="https://code.jquery.com/jquery-3.5.0.js"></script>

    <script>
        var data = '<?php echo $jsonarr ?>';
    </script>

    <script>
        $.ajax({
            type: "POST",
            url: '/',
            data: data,
            dataType: 'json',
            contentType: 'application/json',
            success: function (data) {
                var res = $.trim(data);
                var response = JSON.parse(JSON.stringify(data));
                window.alert(response.lname);
            }

        });
    </script>

</body>

</html>
1
Alperen Özdemir 30 अप्रैल 2020, 21:34
हाँ, वस्तु को वापस करना अजीब लगता है, लेकिन मैं इसे त्रुटि को डीबग करने के हिस्से के रूप में कर रहा था क्योंकि JSON.pare() काम करने के लिए लगता है, लेकिन ऐसा नहीं था इसलिए मैं यह जानना चाहता था कि वास्तव में कोई वस्तु वापस आती है या नहीं . मैंने बस स्ट्रिंग करने की कोशिश की, यह स्ट्रिंग के रूप में प्रतिक्रिया देता है, लेकिन एक वस्तु चाहता था। धन्यवाद
 – 
GeniusGeek
30 अप्रैल 2020, 21:42
1
यदि आप चाहते हैं कि यह बैकएंड पक्ष में जेसन ऑब्जेक्ट के रूप में प्राप्त हो, तो सामग्री प्रकार के साथ डेटा निर्दिष्ट करना न भूलें: 'एप्लिकेशन/जेसन', अन्यथा यह सामग्री प्रकार मल्टीपार्ट/फॉर्म-डेटा है
 – 
Alperen Özdemir
30 अप्रैल 2020, 21:46
1
क्या इसका मतलब स्वतः पता लगाना नहीं है? मैंने इसे बैकएंड में नहीं रखा है और बिना किसी समस्या के लौटाई गई प्रतिक्रिया का उपयोग कर रहा हूं। उस के बारे में कैसा है?
 – 
GeniusGeek
30 अप्रैल 2020, 22:03
यदि यह ठीक है और प्रक्रिया में कोई समस्या नहीं है, तो कोई समस्या नहीं है। मैं बस हैबिट्स के रूप में इसका पालन करता हूं।
 – 
Alperen Özdemir
1 मई 2020, 00:07