以优雅的方式将响应文本解析为键值对

Parsing response text as key value pairs in an elegant way

本文关键字:文本 键值对 响应 方式      更新时间:2023-09-26
似乎

无法在搜索中找到我要查找的内容,因此这可能是重复的,但我还没有找到原件,所以......

我有一个 ajax 电话:

$.ajax({
    url: "/events/instructor/",
    type: 'POST',
    data: {
        instructorID: $(this).attr("id")
    },
    complete: function (data) {
        $("#name").html(data["responseText"]["name"]);
        $("#email").html(data["responseText"]["email"]);
        $("#photo").html(data["responseText"]["photo"]);
        $("#summary").html(data["responseText"]["summary"]);
        $("#url").html(data["responseText"]["url"]);
    }
});

返回的数据由服务器 (C#( 以 JSON 编码。

显然,data["responseText"]["fieldName"]并没有这样做。我可以做拆分之类的事情,但这意味着如果格式发生变化,我需要确保上面的代码跟上数据形状的变化。

我怎样才能说一些像data["responseText']["fieldName"]这样简单的事情来从该键中获取值?

我认为您需要先解析 json。 看看 api.jquery.com/jquery.parsejson

// data = '{ "name": "John" }'
var obj = jQuery.parseJSON( data );
console.log( obj.name);
// result will be "John"

附言也最好使用"成功"而不是"完整",你可以在这里阅读 .success(( 和 .complete(( 之间的区别?

success: function(data) {
  console.log("response is good", data);
},
error: function (){
  console.log("something is went wrong");
}

尝试像这样使用:

complete: function (data) {
        var data=JSON.parse(data);
         $("#name").html(data.responseText.name);
        $("#email").html(data.responseText.email);
        $("#photo").html(data.responseText.photo);
        $("#summary").html(data.responseText.summary);
        $("#url").html(data.responseText.url);     
    }

若要仅获得正确的响应,请使用成功。