JQuery Ajax调用 - 来自变量的参数

时间:2013-02-25 09:26:46

标签: jquery asp.net-mvc

我有另一个问题:( 我有WS,wchich是VS 2010 MVC应用程序的一部分。我可以打电话给它,它工作正常。 我的问题是,我无法从变量(函数参数)传递参数

function test2(usr, art) {
    alert('start : ' + usr);

    var params = {user : usr, idArt : art}

    $.ajax({
        type: "POST",
        url: "/../WebServicePrzeczytany.asmx/Przeczytany",
        data: params,
        dataType: "json",
        success: function suc(msg) {
            alert("odebrane: ");
        },
        faild: fail
    });

    alert('stop : ' + art);
};

我是从按钮调用它(用于测试)。任何sugestions?

问题已解决:

再次非常感谢Anthony Grist(见评论),对于Firebug。这是一个强大的工具。

所以,Firebug告诉我,我收到WS的错误。它是:“请求格式无法识别,因为URL意外地以”/ Przeczytany“结尾。”

解决方案是添加

<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices> 

到WS。就这样。 jupi !! :)

1 个答案:

答案 0 :(得分:0)

如果为Web服务启用JSON(通过使用[ScriptService]属性修饰方法),您将能够像这样调用它:

function test2(usr, art) {
    alert('start : ' + usr);

    var params = {user : usr, idArt : art}

    $.ajax({
        // TODO: never hardcode an url like that => use an url helper to generate that!
        url: '/../WebServicePrzeczytany.asmx/Przeczytany',
        type: 'POST',
        data: JSON.stringify(params),
        contentType: 'application/json',
        success: function suc(msg) {
            alert('odebrane: ');
        },
        error: fail
    });

    alert('stop : ' + art);
};

需要注意的事项:

  • 使用JSON.stringify本机方法将javascript对象转换为JSON字符串,然后再将其传递给Web服务
  • 设置contentType: 'application/json',因为这是我们传递给服务的内容

留给你做:

  • 使用从网址助手(例如@Url.Content("~/WebServicePrzeczytany.asmx/Przeczytany"))生成的网址将硬编码的网址属性替换为您的服务。