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!

1

2 Answers 2

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 :)

Sign up to request clarification or add additional context in comments.

Comments

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); ?>)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.