Ajax $(文档).ready不';无法工作,但页面已加载

Ajax $(文档).ready不';无法工作,但页面已加载,ajax,jquery,Ajax,Jquery,您可以理解我的标题,浏览器不调用getrelatedProducts方法。我把断点$(document).ready(function()放在第行,但它并没有进入ajax调用。 我检查过我有jquery引用。你知道吗 $(document).ready(function () { $.ajax({ type: "POST", url: "http://localhost:2782/AjaxCallPage.aspx/GetReleatedProducts"

您可以理解我的标题,浏览器不调用
getrelatedProducts
方法。我把断点
$(document).ready(function()
放在第行,但它并没有进入ajax调用。 我检查过我有jquery引用。你知道吗

$(document).ready(function () {
    $.ajax({
        type: "POST",
        url: "http://localhost:2782/AjaxCallPage.aspx/GetReleatedProducts",
        data: "{productId:" + productId + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {...}

您已经告诉服务器您正在发送JSON:

contentType: "application/json; charset=utf-8",
…但您要发送的内容:

data: "{productId:" + productId + "}",
…不是有效的JSON。要成为有效的JSON,键
productId
必须在双引号中:

data: '{"productId":' + productId + '}',
//      ^         ^
(这里我假设
productId
是一个数字。如果它是一个字符串,它还需要用双引号括起来。)

因此我怀疑服务器端拒绝了调用,因为JSON无效

将JSON发送到服务器也有点不寻常,尽管如果该服务器被编码为期望JSON,并且发送正确,则JSON完全有效。更典型的做法是使用默认的
应用程序/x-www-form-urlencoded
将数据发送到服务器

因此,除非您将服务器端编码为希望接收JSON,否则请从
$.ajax
调用中删除
contentType
选项,并将
数据更改为:

data: {productId: productId}

…这告诉jQuery为您进行编码。

控制台上有错误吗?首先,您不以字符串的形式传递数据,而是以对象的形式传递数据。因此:
数据:{productId:productId}
就可以了。也许它甚至可以解决问题…?@PetrČihula:如果您愿意,可以将其作为字符串传递。(如果你这样做,你必须自己正确编码。)@pXL不,没有错误。@cagin:这段代码所在文档的URL是什么?特别是,它是否也以
http://localhost:2782
?@cagin:问题中引用的代码与上述代码不同,没有问题(事实上,它一直在跟踪——哦,我假设
productId
是在包含范围内的某个地方定义的)。除了使用调试器(客户端和服务器端)外,它什么都不用做。如果您仍然没有发现问题,请创建一个演示问题的,并将所有代码和配置发布到问题中。使用ASP.Net的人可能能够指出不正确的特定位。这是我愚蠢的错误。。我没有将我的webservice方法设置为静态。。感谢您的所有建议。@cagin:啊!我很高兴您这么做把它说出来。最好的办法是把你自己的答案写出来(这样做很好),然后接受它一次,这样你就可以(两天后)接受它。我将把这个答案留在这里,因为我认为它有/有有用的信息,供以后可能找到它的人使用。。。