【问题标题】:Fill Variable with Web Service Results用 Web 服务结果填充变量
【发布时间】:2016-03-18 17:22:10
【问题描述】:

我有一个通过 jquery 执行 onClick 的 javascript 函数。在这个函数中,我调用了一个返回 True 或 False 的 Web 服务“getTestConnection”,我已经确认它正在工作,但一直返回未定义的变量。

      $("#btnNext2").click(function() {
        var postData = {}; {
          postData['user'] = user;
          postData['password'] = password;
          postData['serviceurl'] = serviceurl;
          postData['datasource'] = datasource;
        };
        //Converts object to string and formats to JSON
        var json = JSON.stringify(postData);

        //connTest keeps getting returned as 'Undefined'
        var connTest = getTestConnection(json);

      });


       < script type = "text/javascript" >
        function getDocType(json, rowcount) {

          $.ajax({
            type: "POST",
            url: "http://localhost:64580/Web_Services/WebServiceLibrary.asmx/GetDocTypes",
            data: json,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(data) {

              //*****************************************************************************
              //This is being called immediately after getTestConnection is executed
              //******************************************************************************         
              for (i = 0; i < data.d.length; i++) {
                $('#SelectDocType' + rowcount + '')
                  .append($("<option></option>")
                    .attr("value", data.d[i].docTypeID)
                    .text(data.d[i].docTypeName));
              }
              var firstDocTypeID = data.d[0].docTypeID;
              var jsonUnstringify = JSON.parse(json);
              var postDataNew = {}; {
                postDataNew['user'] = jsonUnstringify.user;
                postDataNew['password'] = jsonUnstringify.password;
                postDataNew['serviceurl'] = jsonUnstringify.serviceurl;
                postDataNew['datasource'] = jsonUnstringify.datasource;
                postDataNew['docTypeID'] = firstDocTypeID;
              };
              var jsonnew = JSON.stringify(postDataNew);

              getKeywords(jsonnew, rowcount);

            },
            error: function(data) {
              alert("***********Error***********" + data.responseText);
            },
            failure: function(data) {
              alert("***********Failure***********" + data.responseText);
            }
          });
          //Test Connection Web Service
          function getTestConnection(json) {

            $.ajax({
                type: "POST",
                url: "http://localhost:64580/Web_Services/WebServiceLibrary.asmx/TestConnection",
                data: json,
                contentType: "application/json; charset=utf-8",
                dataType: "json",

                if (data.d == 'True') {

                  return true;
                } else {
                  return false;

                }

              },
              error: function(data) {
                alert("***********Error***********" + data.responseText);
              },
              failure: function(data) {
                alert("***********Failure***********" + data.responseText);
              }
            });
        }

       < /script>

【问题讨论】:

  • 您在 javascript 代码中有一个 &lt;script&gt; 标记。这是无效的。
  • 您是否在 ajax 调用 getTestConnection 中忘记了 success: function(data) {} ?此外,您似乎在另一个无效的函数中有一个函数。
  • 你的js代码有错别字还是你的js代码写了另一个脚本标签?

标签: javascript asp.net web-services


【解决方案1】:

您有多个错误:

  1. 您在另一个&lt;script&gt; 标记内有一个&lt;script type = "text/javascript"&gt; 标记
  2. 您在另一个函数中定义了一个新函数:

function getDocType(json, rowcount) { $.ajax({ ..... }); function getTestConnection(json) { .... } }

应该是

function getDocType(json, rowcount) {
    $.ajax({
       .....
    });
}
function getTestConnection(json) {
   ....
}
  1. 您忘记在 getTestConnection 函数中从 AJAX 调用中获取返回的数据:

$.ajax({ type: "POST", url: "http://localhost...", data: json, contentType: "application/json; charset=utf-8", dataType: "json", success: function(data) { if (data.d == 'True') { return true; } else { return false; } }, error: function(data) { .... } });

【讨论】:

  • 呃,我在复制和粘贴 Web 服务调用时搞砸了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
  • 2017-09-01
  • 1970-01-01
相关资源
最近更新 更多