【问题标题】:AJAX: How to use returned array?AJAX:如何使用返回的数组?
【发布时间】:2014-02-10 04:06:01
【问题描述】:

我有一个 ajax POST,它将数据发送到控制器函数,并且该函数将字符串数组作为 ajax 成功方法中的默认第一个参数返回给 ajax 调用。当我尝试使用返回的数据时,它不会让我将第一个元素打印到警报框。怎么会?

 $.ajax(
        {
            type: "POST",
            url: "../Home/stringSplitFunct",
            data: { 'parameter1': Input },
            success: function (response) 
            {
                alert(response[0]);                  
            }
        });

其实我觉得它连字符串数组都认不出来。

【问题讨论】:

  • 你把它变成成功的方法了吗? ajax 返回时的实际响应是什么?
  • 尝试使用实际的调试工具,例如控制台,然后执行console.log(response),然后发布您得到的结果。
  • 或者在 chrome 中检查发送到服务器和从服务器发送的内容(网络选项卡)。
  • 尝试使用成功:function (response) { response = JSON.parse(response);警报(响应 [0]); }
  • 你必须从你的控制器返回一个 JSON 对象。 return Json(yourStringArray, JsonRequestBehavior.DenyGet);

标签: javascript jquery ajax arrays model-view-controller


【解决方案1】:

看起来数据是作为原始字符串返回的。

为您的 ajax 请求使用 dataType 属性

dataType: 'json'

同时避免使用警报,因为它会停止执行流程。请改用console.log

【讨论】:

  • 我想警报只是为了快速而肮脏的故障排除。并且控制台有它自己的陷阱;例如,如果一个页面尝试在 IE 中使用控制台而开发人员工具未打开,则会生成一个 javascript 错误并终止脚本。
【解决方案2】:

您需要指定dataType。阅读更多here

$.ajax({
            type: "POST",
            url: "../Home/stringSplitFunct",
            data: { 'parameter1': Input },
            dataType: 'json',
            success: function (response) 
            {
                alert(response[0]);                  
            }
        });

【讨论】:

  • 不仅要更改数据类型,而且我还必须确保返回一个 JSON 对象并使用 eval() 将其解析为 JavaScript 对象
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多