在 Codeingiter 中的控制器函数中检索多个后置变量

发布于 2024-10-01 07:36:51 字数 515 浏览 2 评论 0原文

我将数据发布到控制器,如下所示:

var postVars = new Array();
postVars[0] = key;
postVars[1] = haveCredits;
postVars[2] = creditsNeeded;
postVars[3] = creditsLeft;
//alert(postVars.join("&"));
xhr.open('POST', 'ajax');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(postVars.join("&"));

如何在控制器函数中检索此值?

控制器代码:

$variableValues= explode('&',$this->input->post('postVars'));

它返回一个空数组。

提前致谢。

I am posting data to controller like this:

var postVars = new Array();
postVars[0] = key;
postVars[1] = haveCredits;
postVars[2] = creditsNeeded;
postVars[3] = creditsLeft;
//alert(postVars.join("&"));
xhr.open('POST', 'ajax');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(postVars.join("&"));

How can i retrieve this values in my controller function?

Controller code:

$variableValues= explode('&',$this->input->post('postVars'));

It is returning an empty array.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伏妖词 2024-10-08 07:36:51

像这样更改最后一行:

xhr.send("postVars="+encodeURIComponent(postVars.join("&")));

现在 $variableValues=explode('&',$this->input->post('postVars')); 应该可以工作。

顺便说一句,我想向您介绍 jQuery。它是最流行的 JavaScript 库之一,并且具有非常强大的 AJAX API

Change last row like this:

xhr.send("postVars="+encodeURIComponent(postVars.join("&")));

Now $variableValues= explode('&',$this->input->post('postVars')); should work.

Btw, i would like to introduce you to jQuery. It's one of the most popular JavaScript libraries and has very powerfull AJAX API.

弱骨蛰伏 2024-10-08 07:36:51

您发送的内容实际上并不是 application/x-www-form-urlencoded 格式。您只是将字符串值连接在一起,而不是命名的 URL 转义参数。

我建议以标准 URL 编码格式发送单独的参数:

function encodeParameters(o) {
    for (var k in o)
        pars.push(encodeURIComponent(k)+'='+encodeURIComponent(o[k]))
    return pars.join('&');
}

var pars= {key: key, have: haveCredits, needed: creditsNeeded, left: creditsLeft};
xhr.open('POST', '/ajax');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(encodeParameters(pars));

然后在 PHP 端,您可以使用普通请求数组检索它们:

$key= $_POST['key'];
$creditsNeeded= intval($_POST['needed']);
// ...

What you're sending isn't really application/x-www-form-urlencoded format. You're just joining together string values, rather than named, URL-escaped parameters.

I suggest sending separate parameters in standard URL-encoded format:

function encodeParameters(o) {
    for (var k in o)
        pars.push(encodeURIComponent(k)+'='+encodeURIComponent(o[k]))
    return pars.join('&');
}

var pars= {key: key, have: haveCredits, needed: creditsNeeded, left: creditsLeft};
xhr.open('POST', '/ajax');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(encodeParameters(pars));

then on the PHP side you can retrieve them using the normal request arrays:

$key= $_POST['key'];
$creditsNeeded= intval($_POST['needed']);
// ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文