【问题标题】:receiving ajax call in JOOMLA?在 JOOMLA 中接收 ajax 调用?
【发布时间】:2013-10-15 07:57:31
【问题描述】:

我正在绑定两个不同的语句来获取 JOOMLA 中 ajax 的 POST 结果

第一个 JOOMLA 原生语句无法正常工作。我也试过get()getVar()。 . .不工作。它返回 null

  $vJson=$app->input->getCmd("chk");

但第二个没问题并显示结果

  $vJson = file_get_contents('php://input');

下面是客户端代码

         xmlhttpp.open("POST","index.php?option=com_hello&controller=SetComObjects",true);
                xmlhttpp.setRequestHeader("Content-Type", "application/json");
                xmlhttpp.onreadystatechange=function()
                {
                if (xmlhttpp.readyState==4 && xmlhttpp.status==200)
                  {
                  alert("haha");
                  }
                }
                 xmlhttpp.send(chk);  

我的控制器代码

 public function execute()
 {

  $app=JFactory::getApplication();


  //following line return null in str_json
  $str_json=$app->input->getCmd("chk");

  //$model->_buildQuery();

  //but following statement is  giving OK result
  $str_json = file_get_contents('php://input');


  $str_json=json_decode($str_json);

【问题讨论】:

  • 你也可以添加你的控制器代码吗?
  • 添加了控制器代码。 . . . .

标签: php json joomla joomla2.5 joomla-extensions


【解决方案1】:

试试这个,

          var data = "chk="+chk;
          jQuery.ajax ({
            type: "POST",
            url: "index.php?option=com_hello&controller=SetComObjects?",
            data: data,
                    dataType: "json", 
            success: function(data) {


            var obj = jQuery.parseJSON(data);
                    alert( obj.name);//if its have a name
            }
         });

您没有将chk 作为参数传递给控制器​​,那么它是如何到达那里的?

希望对你有所帮助..

【讨论】:

  • 你的方法似乎有效,但所有括号都被剥离了 "[{"XOID":"1","XPID":"1","....... 使用file_get_contents('php://input'); ----------------和----------------“XOID1XPID1XobjectNameSin............按你的方法
  • file_get_contents() 正在读取外部网址?什么是您阅读的内容,因为如果您的返回是 json 格式,则 ajax 语句永远不会删除任何 json 数据,那么不需要在 php 中对其进行解码,只需在 js 中执行即可
  • $vJson= JRequest::getVar('chk');----------------- $vJson=$app->input->get( "chk","null");------------------以上是 joomla 的两个本机函数,用于访问 get 和 post 变量。第一个没问题,但第二个是剥离斜线。所以我把它换了。非常感谢您的帮助。 . .问题已解决。
  • 很高兴听到祝你好运 :)
【解决方案2】:

我认为 getCmd 方法是导致问题的原因。 你可以阅读更多JInput::get()here

我建议你使用:

$app->input->getArray($_POST);

【讨论】:

    猜你喜欢
    • 2014-02-16
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 2014-05-20
    • 2010-09-09
    相关资源
    最近更新 更多