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


Jquery .post(url,params) - how to use this if params is a string?

我正面临一个问题,我不知道如何在标题中描述理解,抱歉。希望在课文中能讲得更清楚。

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

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

现在,复制的另一边(与表单)有很多单选按钮在里面,我在{}构建的部分作为一个字符串(参数列表),并试图做同样的。结果字符串参数列表:

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将字符串转换为对象(在JS中使用string to object的帮助):

 objparamlist=eval('({' + paramlist + '})');

现在调用

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

感谢大家的帮助!

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

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

你可以试试:

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