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

如何将字符串数据从ajax成功转换为javascript数据?,javascript,jquery,json,ajax,tinymce,Javascript,Jquery,Json,Ajax,Tinymce,大家好,我有这段代码,我是ajax的初学者,我使用tinymce jquery,我使用我在中找到的提及插件,所以我在这段代码中所做的是列出我可以提及的用户列表,所以我需要运行这段代码: 提及插件网站是: WebMethod部分: 下面是ajax代码部分: 以下是jquery tinymce选项部分: 因此,我真正需要做的是将dat()返回部分转换为与默认部分相同的部分 我真的很感谢你帮助我,所以你的success函数是一个回调函数,在你的dat函数完成之前它不会被触发。因此dat函数不返回任何

大家好,我有这段代码,我是ajax的初学者,我使用tinymce jquery,我使用我在中找到的提及插件,所以我在这段代码中所做的是列出我可以提及的用户列表,所以我需要运行这段代码:

提及插件网站是:

WebMethod部分:

下面是ajax代码部分:

以下是jquery tinymce选项部分:

因此,我真正需要做的是将dat()返回部分转换为与默认部分相同的部分
我真的很感谢你帮助我,所以你的success函数是一个回调函数,在你的dat函数完成之前它不会被触发。因此dat函数不返回任何内容。尝试此add 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;
    }
你不需要这个,但要回答你要用的问题的标题


您还可以将微小的mce init函数移动到success函数中执行,然后可以使调用保持异步。

我找到了问题的答案

我需要的是
eval()
函数。我用
source:eval(dat())
替换了
source:dat()
,一切正常。

你可以试试

 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 "";

            }
        });
    }

数据本身的格式已经正确


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

不,它不起作用。我真正需要做的是将字符串
“[{name:“name1”},{name:“name2”}]”转换为对象,就像
var x=[{name:“name1”},{name:“name2”}]我使用JSON.parse(mystring)添加到我的答案中
 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'},......]
        },})
 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;
    }
 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 "";

            }
        });
    }