0

i try to pass php variable to jquery ,i have try to use

But it's not working success, when i try to use

dataSource: insted

dataSource: [
  { childName: "Child1", childId: 1, parentId: 1 },
  { childName: "Child2", childId: 2, parentId: 2 },
  { childName: "Child3", childId: 3, parentId: 1 },
  { childName: "Child4", childId: 4, parentId: 2 }
 ]

it's cannot show the second select ,but i find the $data is the same as the original data

my code ,

<head>
 <meta charset="utf-8"/>
 <title>Kendo UI Snippet</title>

 <link rel="stylesheet"     href="http://kendo.cdn.telerik.com/2016.2.607/styles/kendo.common.min.css"/>
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.2.607/styles/kendo.rtl.min.css"/>
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.2.607/styles/kendo.silver.min.css"/>
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.2.607/styles/kendo.mobile.all.min.css"/>

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://kendo.cdn.telerik.com/2016.2.607/js/kendo.all.min.js">        
</script>
</head>
<body>

 <input id="parent" />
 <input id="child" />
 <?php 
 $data = '[
  { childName: "Child1", childId: 1, parentId: 1 },
  { childName: "Child2", childId: 2, parentId: 2 },
  { childName: "Child3", childId: 3, parentId: 1 },
  { childName: "Child4", childId: 4, parentId: 2 }
 ]';
?>
<script>
$("#parent").kendoDropDownList({
  dataTextField: "parentName",
  dataValueField: "parentId",
  dataSource: [
  { parentName: "Parent1", parentId: 1 },
 { parentName: "Parent2", parentId: 2 }
   ]
  });

 $("#child").kendoDropDownList({
cascadeFrom: "parent",
dataTextField: "childName",
dataValueField: "childId",

dataSource: <?php json_encode($data); ?>
});
</script>

 </body>
</html>

i don't know what's problem with my code,please help me to solve the problem , anyhelp will be appreciated ! thanks!

matt.crawfoord
  • 87
  • 1
  • 3
  • 13
  • Possible duplicate of [How to pass variables and data from PHP to JavaScript?](http://stackoverflow.com/questions/23740548/how-to-pass-variables-and-data-from-php-to-javascript) – John Jun 22 '16 at 12:24

2 Answers2

1

You forget to echo your php variable

<?php echo json_encode($data); ?>

plus, since you want it in json format, you have to parse it too and because of that you have to enclose your property name in double quotes.

your php variable will become:

$data = '[
    { "childName": "Child1", "childId": 1, "parentId": 1 },
    { "childName": "Child2", "childId": 2, "parentId": 2 },
    { "childName": "Child3", "childId": 3, "parentId": 1 },
    { "childName": "Child4", "childId": 4, "parentId": 2 }
]';

and dataSource will be:

dataSource: JSON.parse(<?php echo json_encode($data); ?>)

Its working :)

 Its working :)

0

The problem here is that you are trying to parse a string directly to JSON and by doing so you will get also the "new lines" and other characters escaped on the output string as you can see in this test:

http://sandbox.onlinephpfunctions.com/code/3c31cecddd99aee0562d09c84b9a8e5770c3444b

However you could achieve the output that you want passing a properly formatted array to the json_encode function instead of a string like so:

$data_array = array(
    array('childName' => "Child1",
          'childId' => "1",
          'parentId' => "1"),
    array('childName' => "Child2",
          'childId' => "2",
          'parentId' => "3"),
    array('childName' => "Child3",
          'childId' => "3",
          'parentId' => "3"),
    array('childName' => "Child4",
          'childId' => "4",
          'parentId' => "4"),          
);

echo json_encode($data_array);

/*
Output:
[{"childName":"Child1","childId":"1","parentId":"1"},
{"childName":"Child2","childId":"2","parentId":"3"},
{"childName":"Child3","childId":"3","parentId":"3"},
{"childName":"Child4","childId":"4","parentId":"4"}]
*/

Edit: as @mohammad-mudassir noted you also need to use JSON.parse to parse the string back to JSON.

dataSource: JSON.parse(<?php echo json_encode($data_array); ?>)

user0370730
  • 31
  • 1
  • 7