如何将ajax成功的字符串数据转换为javascript数据?

时间:2015-11-25 21:30:34

标签: javascript jquery json ajax tinymce

Hello Everybody我有这个代码,我是ajax的初学者,我正在使用tinymce jquery,我正在使用我发现的提及插件,所以我在这段代码中所做的就是制作我可以提到的用户列表,因此我需要运行此代码:

提到插件网站是: https://github.com/CogniStreamer/tinyMCE-mention

  

WebMethod Part:

 [WebMethod]
    public static string GetUsers()
    {
        return "[{name:'Messi'},{name:'Jason'},{name:'Omar'},{name:'Eren'}]";
    }
  

这是ajax代码部分:

 function dat() {
            $.ajax({
                type: "POST",
                url: "Default.aspx/GetUsers",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                 alert(data.d);//show me this alert "[{name:'Messi'},{name:'Jason'},{name:'Omar'},{name:'Eren'}]"
                    return data.d;
                },
                error: function (data) {
                    return "";

                }
            });
        }
  

这里是jquery tinymce选项部分:

 tinymce.init({



        selector: '#Selector',
        theme: 'modern',
        elements: "rte",
        plugins: [
          'advlist autolink mention lists link image charmap  preview hr anchor pagebreak',
          'searchreplace wordcount visualblocks visualchars code fullscreen',
          'insertdatetime media nonbreaking  table contextmenu directionality',
          'emoticons template paste textcolor colorpicker  imagetools'
        ],
        mentions: {
            source:dat()//the default option was [{ name: 'Messi'},{name:'Jason'},......]
        },})

所以我真正需要做的是将dat()返回部分转换为默认值 而且我非常感谢帮助我

4 个答案:

答案 0 :(得分:0)

所以你的成功函数是一个回调函数,它在你的dat函数完成之前没有被触发。因此dat函数不会返回任何内容。试试这个添加asyc:false所以方法等待。

 function dat() {
     var retdat;
        $.ajax({
            type: "POST",
            url: "Default.aspx/GetUsers",
            data: "{}",
            contentType: "application/json;        charset=utf-8"
            async:false
            dataType: "json",
            success: function (data) {
             alert(data.d);//show me this alert "[{name:'Messi'},{name:'Jason'},{name:'Omar'},{name:'Eren'}]"
                retdat = data.d;
            },
            error: function (data) {
                return "";

            }
        });
       return retdat;
    }

您不应该这样做,但要回答您将使用JSON.parse()

的问题标题

你也可以移动微小的mce init函数在success函数中执行,然后你可以保持调用异步。

答案 1 :(得分:0)

我找到了问题的答案。

我需要的是eval()功能。我将source:dat()替换为source: eval(dat()),一切正常。

答案 2 :(得分:0)

你可以尝试

 function dat() {
        $.ajax({
            type: "POST",
            url: "Default.aspx/GetUsers",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
             alert(data.d);//show me this alert "[{name:'Messi'},{name:'Jason'},{name:'Omar'},{name:'Eren'}]"
             var result = JSON.parse(data.d);
              //or you can do without do statically like split(data.d,'"'); then whatever result you get can return that is also
                return result;
            },
            error: function (data) {
                return "";

            }
        });
    }

答案 3 :(得分:0)

数据本身的格式正确。

由于数据是异步提取的,因此您必须在回调中调用process方法将数据传递回插件。这将更详细地解释here