将对象从JS传递到PHP并返回

将对象从JS传递到PHP并返回,php,ajax,xpath,javascript,Php,Ajax,Xpath,Javascript,我不认为这是不可能做到的,或者说是不容易做到的 想想看,在HTML的div中有一个按钮,当你点击它时,你通过AJAX调用一个php函数,我想把启动click事件的元素(或任何作为参数的元素)发送到php,然后再返回到JS,就像php中的serialize(),以便能够在JS中恢复元素 让我举一个简单的例子: PHP: JS: HTML: 回调函数是: document.getElementById(el).color='red'; callbackFunction(someArgsFromPh

我不认为这是不可能做到的,或者说是不容易做到的

想想看,在HTML的div中有一个按钮,当你点击它时,你通过AJAX调用一个php函数,我想把启动click事件的元素(或任何作为参数的元素)发送到php,然后再返回到JS,就像php中的serialize(),以便能够在JS中恢复元素

让我举一个简单的例子:

PHP:

JS:

HTML:

回调函数是:

document.getElementById(el).color='red';
callbackFunction(someArgsFromPhp, el){
   el.color='red';
// parse someArgsFromPhp
}
我认为这种方法很难,因为在一个大页面中很难跟踪所有ID

方法2. 我认为使用xPath是可以做到的,如果我可以得到元素的确切路径,并在回调函数中计算该路径以到达元素。这个方法需要一些谷歌搜索,它只是一个想法

方法3. 修改我的AJAX函数,使其保留启动事件的元素,并在PHP返回时将其作为参数传递给回调函数,因此在我的AJAX中如下所示:

ajaxCall(this.id, callbackFunction);
eval(callbackFunction(argumentsFromPhp, element));
回调函数是:

document.getElementById(el).color='red';
callbackFunction(someArgsFromPhp, el){
   el.color='red';
// parse someArgsFromPhp
}
我认为第三个选择是我选择开始这个实验

你们中有谁对我如何做到这一点有更好的想法吗

多谢各位

编辑:

前面的例子并不复杂,这次我将尝试更好的解释

PHP:

JS:

HTML:

JS:

PHP:


如果每个元素都有一个ID,并将该ID传递给PHP并返回,则可以完成此操作。我知道这不是“合法的”,但现在我的ID不是唯一的。我使用DIV作为包装,DIV中的每一个都有唯一的ID(就像使用DIV作为主体一样,在同一时间打开了很多页面,很多主体)。如果你访问一个元素,你总是知道该元素的父元素是谁。

很多javascript库都使用#1的形式。你真的应该去看看许多优秀的库中的一个,它们是jQuery、prototype、mootools等等。这个问题以前已经解决了。

你不会只发送对象中的信息就发送对象。这是一种开发模式,如果你不想,你甚至不必使用AJAX。我想你有一个有趣的问题,但你的示例/解释不够好,我无法理解你在尝试什么。这是一个一般性的问题,我想将JS对象发送到PHP,并能够将它们发送回JS,并将它们用作JS对象。一个简单的例子,在JS中我有这样一个对象:var obj=document.getElementById('someId');ajaxCall(obj,回调);我想通过AJAX将该对象发送到PHP,并通过AJAX调用中使用的回调函数返回到JS。假设回调函数如下所示:函数回调(obj,data){obj.innerHTML=data;//其中obj是AJAX调用之前getElementById的结果,数据是PHP查询的结果。}
callbackFunction(someArgsFromPhp, el){
   el.color='red';
// parse someArgsFromPhp
}
function phpFunct($age){
   $text='';
   if(!is_numeric($age)){
      $t['alert'] = 'You filled an invalid age !';
      return $t;
   }
   // Can be lots of code ...
   $text.='Your age is '.$age;
   $t['#myDiv'] = $text;
   return $t;
}
function callback(x){
   for(i in x){
      if(i == 'alert'){
          // Alert if something went wrong.
          alert(x);
      } elseif(){
         // ... more options, promts, console.log's ...etc
      }else{
         // Simple innerHTML
         $(i).val(x);
      }
   }
}

phpFunct(){
   x_phpFunct($('#age').val(), callback); //call PHP function via AJAX
}
<div id="myDiv">
<input type="text" id="age" /><br />
<input type="button" value="getSomethingFromPhp" onCLick="phpFunct();" />
</div>
onClick="phpFunct(this.parentNode);"
phpFunct(el){
   x_phpFunct(el, $('#age').val(), callback);
}
phpFunct($el, $age){
    ...
    $t[$el] = 'Your age is '.$age;
    return $t;
}