使用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); 

希望能帮助到你…