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

标签 javascript jquery json ajax web-services

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

在下面的代码片段中,targetURL 已成功作为 URL 传入。但是,当我尝试将“参数”作为数据参数(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";
            }
        });
    };

最佳答案

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

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

如果您希望服务器上有标准形式的编码数据,则删除:

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

也永远不要使用async: false,它已被弃用,并且一直是一种糟糕的做法

关于javascript - 使用 $.ajax POST 将查询字符串参数传递给 WebService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41213178/

相关文章:

javascript - 如何在框架集中的 iframe 中更改 CSS

javascript - 基于单选按钮选择禁用按钮

linux - 如何使用 jQuery .ajax() 读取目录?

javascript - 在传单弹出窗口中提交表单不返回结果

c# - 通过 WebClient 上传 JSON

javascript - Parse Cloud httpRequest 不返回响应

javascript - ASP :label and javascript getElementById

javascript - 更改 HTML 页面语言

JavaScript 保持打印相同的日期/时间并且不更新

PHP JSON GET 在网页上正确显示,但在 php 中不正确