努力为我的应用程序构建JS / PHP验证功能

时间:2012-12-24 22:08:12

标签: javascript windows-8 windows-applications

我有一个Web服务,在查询Web服务并找到匹配项时返回JSON对象,下面是成功返回的示例:

{"terms":[{"term":{"termName":"Focus Puller","definition":"A focus puller or 1st assistant camera..."}}]}

如果查询没有产生匹配,则返回:

Errant query: SELECT termName, definition FROM terms WHERE termID = xxx

现在,当我通过Win 8 Metro应用程序访问它时,我使用以下代码解析JSON表示法对象以获取JS对象:

var searchTerm = JSON.parse(Result.responseText)

然后我有代码处理searchTerm并将返回的值绑定到app页面控件。如果我输入一个在数据库中找到匹配的成功查询,那么一切都很有效。

我无法解决的是一种验证错误查询的方法。我想测试var searchTerm = JSON.parse(Result.responseText)返回的值,如果它是一个成功的结果,继续做我现在正在做的事情,但是在失败时以不同的方式处理结果。我应该检查一下这个?我很高兴在我的应用程序或Web服务中实现额外的验证,任何建议表示赞赏。

谢谢!

1 个答案:

答案 0 :(得分:1)

有几种不同的方法可以解决这个问题。

一种方法是利用HTTP响应标头来传递有关查询的信息(即找到的记录的HTTP 200状态,404表示找不到的记录,{{1}对于错误的请求等)。然后,您可以检查响应代码以确定您需要执行的操作。这种方法的优点是,这不需要对响应消息格式进行任何更改。 con可能是您必须修改返回的标头。这是真正的RESTful服务使用的方法中更典型的。

另一种方法可能是将成功/错误消息作为结构化JSON响应的一部分返回。这样你的JSON可能看起来像:

400

您显然可以更改数据中{ "result":"found", "message": { "terms":[{"term":{"termName":"Focus Puller","definition":"A focus puller or 1st assistant camera..."}}]} } } 的值以返回错误,并将错误消息放在result中。

这里的专业人员是您不必担心标头修改,并且您返回的数据始终可以通过message进行解析。结果是,现在你的回复消息中有额外的冗长。