$ .post未在Web服务中调用

时间:2012-03-14 20:14:29

标签: jquery

function sendStates(data) {
    var states = new Object();
    states.Id = 1;
    states.Name = "Chandan";
    $.post("WebService.asmx/MultiDim/", states, function (data) {
        alert("reached");
    });
}

sendStates(空);

WebService文件:

[WebMethod]
        public void MultiDim(statesTemplate states)
        {

        }

MultiDim函数不会被调用。

3 个答案:

答案 0 :(得分:1)

变化:

var states = new Object();
    states.Id = 1;
    states.Name = "Chandan";

var object = {states: {Id: 1, Name: "Chandan" }}
$.post("WebService.asmx/MultiDim/", object, function (data) {
    alert("reached");
});

需要方法参数名称。您发送给.NET的对象需要方法参数名称才能解析您的请求。


    [WebMethod]
    public void MultiDim(statesTemplate states /* must be the javascript name too */)
    {

    }

jQuery不知道你的对象的变量名是states。它只是一个具有两个属性IdName的对象。

因此,添加具有属性states的对象就是答案。

var objectToSendToNet = new Object();
objectToSendToNet.states = new Object();
objectToSendToNet.states.Id = 1;
objectToSendToNet.states.Name = "Chandan";

$.post("WebService.asmx/MultiDim/", objectToSendToNet, function (data) {
    alert("reached");
});

答案 1 :(得分:1)

您的JS代码和WS共享相同的路径吗?尝试指定webservice的路径,并且我更容易初始化对象。

function sendStates(data) {
    var states = {Id: 1, Name: "Chandan"};
    $.post("/WebService.asmx/MultiDim/", states, function (data) {
        alert("reached");
    });
}

更新: 您是否观看了网络流量以验证请求是否实际发送到服务,还是在控制台中观看了任何帖子后反馈?

我在测试应用程序(减去webservice)上实现了以下内容,完全没有问题:

function dataTest (data) {
    console.info('Arrived in the dataTest function');
    var states = { Id: 1, Name: 'Dustin' };
    $.post("Home/SomeTest", states, function (data) {
        console.info('Post complete, data below');
        console.log(data);
        alert('here');
    }, 'json');
}
var ob = [{ Id: 3, Name: "Test" }, { Id: 4, Name: "Testing"}];
dataTest(ob);

更新2: 您是否能够通过控制台或网络验证是否实际调用了该功能?放入console.info('这里有一些文字')来确定你是否正在进入你的功能。如果您正在使用它,那么问题出在WebService上。如果你没有使用它,问题出在你的JS。

更新3: 我首先要验证您是否可以使用您发布的地址调用WebService,并且它可以按预期运行。如果通过: 如果调用是一个事件的结果,并且它是相应的处理程序:我将从事件处理程序开始跟踪,验证它确实被触发,最后是它正在进行sendStates(数据)调用。 否则:设置断点并验证您是否正在进行sendStates(数据)调用。 如果您尚未使用Google Chrome浏览器,则可以在公园内进行Javascript调试。祝你好运!

答案 2 :(得分:0)

是否为指定的网址发帖?有没有明显的javascript错误?到目前为止,我看到了一个可能的问你没有指定一个回调即:json,xml,其他将在帖子的function(){}部分之后但在()内定义。因此,它可能会忽略并输出并跳过帖子中的函数,以便对发回的数据执行某些操作。

如何更改它以查看其是否正常工作的示例。

function sendStates(data) {
    var states = new Object();
    states.Id = 1;
    states.Name = "Chandan";
    $.post("WebService.asmx/MultiDim/", states, function (data) {
        alert("reached");
    }, 'json');
}

如果您还没有使用它,我还建议您使用名为firebug的浏览器插件。它可以帮助您确定您可能遇到的许多潜在问题。