0

正如您可以理解我的标题,浏览器不调用该GetReleatedProducts方法。我放了断点$(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) {...}
4

1 回答 1

2

你已经告诉服务器你正在向它发送 JSON:

contentType: "application/json; charset=utf-8",

...但是您要发送的内容:

data: "{productId:" + productId + "}",

...不是有效的JSON。要成为有效的 JSON,密钥productId必须用双引号括起来:

data: '{"productId":' + productId + '}',
//      ^         ^

(这里我假设productId是一个数字。如果它是一个字符串,它也需要用双引号括起来。)

所以我怀疑服务器端拒绝调用是因为 JSON 无效。

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

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

data: {productId: productId}

...它告诉 jQuery 为您进行编码。

于 2013-05-21T11:21:00.253 回答