繁体   English   中英

如何在$ .ajax中将变量传递到Web服务

[英]How to pass a variable to webservice in $.ajax

我想向Web服务发送参数。 该参数必须是变量,而不是固定的字符串。编写以下代码时,Web服务被称为罚款并且可以完美执行。

$(document).ready(function() {
  $.ajax({
    type: "POST",
    url: "JsonTestService.asmx/Test",
    data:"{'url':'http://www.cramster.com'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
      alert(msg.d);
    }  
  });
});

但是当我将以下代码更改为x是变量时,它不起作用。 您能否通过以下代码告诉我如何将变量传递给Web服务。

data:"{'url':x}",

你真的很亲近 不要将数据元素值括在引号中,即:

$(function() {
  var dynamic_url = "http://www.example.com";
  $.ajax({
    type: "POST",
    url: "JsonTestService.asmx/Test",
    data: {
      url: dynamic_url
    },
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
      alert(msg.d);
    }
  });
});`

通过将整个批次都用引号引起来,就不会对表达式进行评估。 我也建议同时使用两种语法来传递对象。 我认为它更清晰。

您必须引用整个JSON字符串的原因:

在对它们的请求中,ASP.NET AJAX脚本服务和页面方法理解并期望将参数序列化为JSON字符串。 这些参数是从POST数据中解析出来的,并用作您调用的方法的参数。

但是,如果您直接提供JSON对象作为$ .ajax调用的数据参数,则jQuery会将对象序列化为一系列要发布的k,v对,而不是将原始JSON传递给您的Web服务。

如果您有兴趣,可以在这篇文章中获得有关将jQuery与ASP.NET AJAX Web服务和页面方法结合使用时常见陷阱的更多详细信息。

您可能还对使用stringify方法使构造JSON字符串更简洁感兴趣。

以下应该工作:

$(document).ready(function() {
    var x = 'http://www.cramster.com';

    $.ajax({
        type: "POST",
        url: "JsonTestService.asmx/Test",
        data: { 'url': x },
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            alert(msg.d);
        }
    });
})

您需要在data参数两边加上引号。

每个jquery文档都将完整的json作为字符串是正确的,将x的值放入其中的显而易见的解决方案是:

data:"{\"url\":\"" + x + "\"}",

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM