使用$ .ajax POST将查询字符串参数传递给WebService

时间:2016-12-18 21:40:29

标签: javascript jquery json ajax web-services

如果我有一个需要多个查询字符串参数的web服务来查询底层数据库,我应该将它们放在URL中,还是可以将它们放入一个变量中,然后传递给$ .ajax请求的data参数?我的部分问题很简单 - 数据参数究竟代表什么?

在下面的代码段中,targetURL已成功传入URL。但是,当我尝试将'parameters'作为数据参数(data:parameters)传递时,调用失败。

    function JSONTest() {

        //var targetURL = "http://localhost:49633/compass/compatability/webservices/SearchDatabase.ashx?mode=contact&searchvalue=" + encodeURI(document.getElementById("jsonInput").value) + "&format=json";
        var targetURL = "http://localhost:49633/compass/compatability/webservices/SearchDatabase.ashx";
        var parameters = "mode=contact&searchvalue=da&format=json";

        document.getElementById("targetURL1").innerText = targetURL;
        document.getElementById("ResultTable").innerHTML = "";

        $.ajax({
            type: "POST", //rest Type
            url: targetURL,
            data: parameters,
            async: false,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            complete: function (jqXHR, textStatus) {
                jsonResponse = $.parseJSON(jqXHR.responseText);
                for (i = 0; i < jsonResponse.length; i++) {
                    if (i % 2 == 0) {
                        createTableRow(i, "tableRow");
                    } else {
                        createTableRow(i, "tableRowAlternating");
                    }
                }
                document.getElementById("ReturnTest2").style.display = "block";
            }
        });
    };

1 个答案:

答案 0 :(得分:0)

如果你希望json被发送为你的contentType暗示,那么你需要通过从一个对象开始然后将该对象字符串化来将你的数据从urlencoded字符串更改为json

var data = {
   mode: 'contact',
   searchvalue: 'da',
   format: 'json'
}
var parameters = JSON.stringify(data);

如果您希望在服务器上使用标准格式编码数据,请删除:

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

也永远不会使用async: false,它已被弃用,并且一直是一种可怕的做法