getJson不发送空值

时间:2014-01-31 21:52:44

标签: jquery json getjson

我正在对SQL数据库和存储过程进行JSON调用。我有字段作为存储过程的参数,它们可能有也可能没有值,但是当它们为null时,null不会被发送,它什么都不发送。我本来期望看到空值,当我查看我的javascript模型时,我确实看到空值。我不确定我需要采取哪些不同的做法?

以下是我的代码的一部分:

for (var i = 0, len = dsModelChanges.length; i < len; i++) {
    $.getJSON(Helpers.toServicesUrl("/PostupdateBatchUsersSchools"),
    {

        userName: WSIPCContext.UserName,
        districtId: WSIPCContext.DistrictId,
        UserToUpdate: 'lhedman', // dsModelChanges[i].Username,
        SchoolCode1: dsModelChanges[i].SchoolCode1,
        Selected1: dsModelChanges[i].Selected1,
        SchoolCode2: null,
        Selected2: null,

当我不对空值进行硬编码时,这是我的请求的一部分。这表明“2”的值只是不发送任何内容。

ClientBin/WSIPC-Services-Web-WSIPCSPService.svc/json/PostupdateBatchUsersSchools?userName=wise%5Clhedman&districtId=2&UserToUpdate=lhedman&SchoolCode1=422&Selected1=true&SchoolCode2= &Selected2=&SchoolCode3=null&Selected3=null

将值硬编码为null的工作原理是请求成功,但当然不起作用,因为我可能在该字段中有一个有效值。我尝试过做一个toString,但发现这对空值不起作用。

我可以遍历我的数据并将字段设置为“null”,如果它们是,但我真的认为必须有更好的方法。

我应该看什么?

编辑以添加更多信息:(2/4/14) 我已经查看了与我的存储过程的交互,看起来字符串值很好,没有发送任何内容,我添加了代码,如果没有发送任何内容,则将它们设置为null。

问题是存储过程中定义为“bit”的字段,以及我的javascript中的“bool”。我尝试了类似的代码将它们发送到“0”然后在存储过程中“假”,但这不起作用。我可以在JavaScript中将它们硬编码为“假”,这样可行,但看起来很笨拙。

我的代码片段:

CREATE PROCEDURE dbo.updateBatchUsersSchools
(

@Username VARCHAR(100),
@DistrictId INT,
@UserToUpdate varchar(100),
@SchoolCode1 varchar(10) = null,
@Selected1 bit = 0,

0 个答案:

没有答案