使用jquery发送数组
我有一个变量$ visitRecord-> getReferallist(),它获取数组中的医生列表。 我需要将数组发送到php文件并在php文件中执行foreach操作..如何在jquery中发送此数组变量。 这段代码不起作用。
function seekOpinion() { var queryUrl = "url(array('controller' => 'consultant', 'action' =>'opiniondoclist'));?>"; $.post(queryUrl,{referal:'',visitId:'',referalList:'getReferallist(); ?>'},function(data) { $('.opiniondoclistData').html(data); }); document.getElementById('opiniondoclistDiv').style.display = ""; }
您的问题是您正在使用PHP中的数组。
echo $ visitRecord-> getReferallist(); //返回引用数组。
当您通过回显将数组转换为字符串时(因为echo输出字符串),您将获得文本“Array”。
为了通过网络发送(通过javascript通过AJAX($ .post)),您需要将引荐列表转换为字符串。 一种方法是序列化。 您可以使用serialize ()函数将数组转换为“可字符串格式”。 http://www.php.net/serialize。
当在AJAX请求中从PHP接收到这一点时,您可以使用unserialize ()函数将“可字符串格式化”数组转换回纯数组。 http://www.php.net/unserialize。
你的代码应该改变
$ visitRecord-> getReferallist();
至
序列化($ visitRecord-> getReferallist());
然后当它收到你应该改变你的代码
$ referrals = $ _POST [‘referalList’]; //数组的可串行版本
至
$ referrals = unserialize($ _ POST [‘referalList’]); //纯PHP数组
使用Serialize()将数组转换为字符串,发送它,然后使用unserialize()将其恢复到php中的数组;
连载()
我认为你可以使用json_encode()将数组编码为一个字符串,jquery将能够作为javascript数组读回
编辑 :抱歉,我没有正确阅读你的问题,我看到你不想在javascript中读取数组,但在PHP中,所以可能serialize()和unserialize()比json_encode()更好,假设它正确地逃脱用于javascript。
var sendData = 'referal=&visitId=&referalList=getReferallist()); ?>'; $.post(queryUrl, sendData,function(data) { //etc
然后接收脚本可以(除了任何必要的清理):
$referalList = explode('-', $_POST['referalList']);
如果需要,不要忘记对所有变量进行添加
PHP将自动从查询字符串或发布的数据创建数组变量,其中包含名称末尾的“[]”。 例如,您可以按如下方式执行jQuery加载调用,以将数组传递给PHP。
$('#target').load('index.php?foo[]=a&foo[]=b');
在PHP方面,你将在$ _GET中有一个名为foo的数组
jQuery的AJAX函数,例如$ .post,$。get和$ .ajax可以在它们的数据部分传递这样的javascript数组 – 只需确保在末尾用变量命名为[[]“,以便PHP知道如何处理它。
我找到了解决这个问题的方法……
在您的javascript中使用此function…
function js_array_to_php_array (a) { var a_php = ""; var total = 0; for (var key in a) { ++ total; a_php = a_php + "s:" + String(key).length + ":\"" + String(key) + "\";s:" + String(a[key]).length + ":\"" + String(a[key]) + "\";"; } a_php = "a:" + total + ":{" + a_php + "}"; return a_php; }
a是你在这个函数中传递的数组然后..在你的php上你得到这个函数的返回数组写这个代码…
$my_array = unserialize(urldecode(stripslashes($_COOKIE['php_array']))); // print_r ($my_array);
希望能帮助到你…