2012-01-31 3 views
0

Я реализую плагин jQuery Easy UI для дерева флажков. У меня возникает проблема при загрузке данных узла из моего класса действий. Свойство url, похоже, не принимает параметров -Как передать параметры URL в jQuery

Если я даю url: '/webapp/fetchData', я могу получить данные. Но если я дам

url: '/webapp/fetchData?nodeId='+nodeId мой класс действия не может получить параметр nodeId. Любое решение?

Редактировать код портирован с комментарием:

onExpand: function(node) { 
    alert("inside expand"); 
    var nodeId = node.id; 
    url: '/webapp/fetchdata?nodeId='+nodeId ; 
} 
+0

Пожалуйста, ваши код. –

+0

Вот полная функция: onExpand: function (node) {alert ("inside expand"); var nodeId = node.id; url: '/ webapp/fetchdata? nodeId =' + nodeId; } – user1126136

+0

В обновленном коде эта строка ничего не делает: 'url: '/ webapp/fetchdata? NodeId =' + nodeId;' Все, что он делает, это создать [label] (https://developer.mozilla.org/en/ JavaScript/Reference/Statement/label), называемый 'url', а затем объединяет две строки и ничего не делает с результатом. Я думаю, вам нужно показать немного больше вашего кода, чтобы получить осмысленный ответ. –

ответ

0

Попробуйте это:

Использование POST

function DoAction(id, name) 
{ 
$.ajax({ 
    type: "POST", 
    url: "someurl.php", 
    data: "id=" + id + "&name=" + name, 
    success: function(msg){ 
       alert("Data Saved: " + msg); 
       } 
}); 
} 

Использование GET

function DoAction(id, name) 
{ 
$.ajax({ 
     type: "GET", 
     url: "someurl.php", 
     data: "id=" + id + "&name=" + name, 
     success: function(msg){ 
       alert("Data Saved: " + msg); 
       } 
}); 
} 
+0

Я использую дерево флажков Easy UI plugin fir. Таким образом, они не будут работать, поскольку они определили свое собственное свойство данных. – user1126136

+0

Как насчет обертывания кода «URL» в скобке, чтобы сделать разницу? url: ('/ webapp/fetchdata? NodeId =' + nodeId); – Downpour046

+0

nope ... опция скобки также не работает ... – user1126136

0

Вот что работает для меня:

Решение 1: от статического HTML JavaScript: на стороне вызывающего абонента:

function onBeforeLoad (node, data) 
{ 
    data.Name=name; 
} 

HTML на стороне вызывающего абонента:

<ul id="ScriptTree1" class="easyui-tree" lines="true" data-options="onBeforeLoad:onBeforeLoad, lines:true, processData:false" url="someural.php"/> 

Решение 2: от динамического кода: HTML

<ul id="ScriptTree2" class="easyui-tree" animate="true"></ul> 

функция Javascript запускается на любом конкретном случае:

function filltree() 
{ 
$('#ScriptTree2').tree 
({ 
     dataType:'json', 
     method:'POST', 
     lines: true, 
     processData:false, 
     onBeforeLoad: function (node,param) { param.Name=name; return true;}, 
     onLoadError: function (dom) 
      { 
       if (!String.prototype.trim) 
       { 
        String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g, '');}; 
       } 

       var sResponse = new String (arguments[0].responseText); 

       alert ('Compl: ' + arguments[1] + ' ' + arguments[2].description + ' ' + arguments[2].name + '\r\nAnswer:\r\n' + sResponse.trim() + '\r\nQuery: \r\n' + decodeURIComponent(arguments.caller.caller.caller[0].data)); 

       return true; 
      }, 
     url:'someurl.php' 
    }); 
} 

и вызываемая сценарий: someurl.php

<? 
if ($_POST['Name'] != '') {$Name=$_POST['Name'];}  else {$Name='';}; 

if ($_POST) 
{ 
    $kv = array(); 
    foreach ($_POST as $key => $value) 
    { 
    $kv[] = "$key=$value"; 
    } 
    $query_string = join(" | ", $kv); 
} 

echo '[{"id":100,"text":"params","state":"open","children":[{"id":104,"text":"query_string: '.$query_string.'","state":"open"}]}]'; 
?> 
Смежные вопросы