我正在对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,