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函数不会被调用。
答案 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
。它只是一个具有两个属性Id
和Name
的对象。
因此,添加具有属性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的浏览器插件。它可以帮助您确定您可能遇到的许多潜在问题。