Jquery .post(url,params) - 如果params是一个字符串,如何使用它?

时间:2015-07-10 12:33:47

标签: javascript php jquery ajax

我正面临一个问题,我不知道如何在标题中理解,对不起。希望它在文中会更加清晰。

我已经用jquery做了一个很好的ajax帖子。就是这样:

var p1 = $.post(url,{what:"Add",d:dokid,u:seluserid});
p1.done(function(data){
...

现在,要将其复制到另一侧(带有表单),里面有很多单选按钮,我将{}中的部分构建为字符串(paramlist)并尝试执行相同的操作。生成的字符串参数列表:

paramlist = {what:"insert",ID:"-1",Name:"",Beschreibung:"",FieldX:"4",FieldY:"4",Roles:"4",FieldZ:"4",FieldN:"4"}

我通过浏览每个无线电元素获得了FieldNames和Values。

现在我通过以下方式调用.post:

var p1 = $.post(url,paramlist);
p1.done(function(data){
...

这似乎没有这种方式,因为我的php无法识别post参数。

$what=$_POST['what'];

给我PHP注意:未定义的索引:什么...... 显然我必须将字符串转换为其他内容。但是怎么样?我现在没有搜索条件,所以我想问一下。 jquery api对我没有帮助。也许我在所有这些东西中都是新手...... 有什么想法吗?

我做了什么才能让它发挥作用: 从字符串中删除{}括号并将所有元素放在"中。所以现在paramlist看起来像:

paramlist = "what":"insert","ID":"-1","Name":"","Beschreibung":"","FieldX":"4","FieldY":"4","Roles":"4","FieldZ":"4","FieldN":"4"}

然后使用eval:

将字符串转换为对象(在String to object in JS的帮助下)
 objparamlist=eval('({' + paramlist + '})');

现在正在呼叫

var p1 = $.post(url,objparamlist);

作品。

感谢大家的帮助!

2 个答案:

答案 0 :(得分:1)

我就是这样做的.. ..一点推断,但更容易阅读。

$.ajax({
    url: "/ajax/url.php",
    type: "POST",
    data: {
        data: JSON.stringify(paramlist)
    },
    success: function.....

答案 1 :(得分:0)

你可以试试这个:

var p1 = $.post(url,{data: JSON.stringify(paramlist)});

此致