JS if语句没有从json响应中评估

时间:2014-05-20 00:04:27

标签: javascript json

我试图验证我的表单,并且我已经验证了数组正被发送回函数但是if语句不起作用。我再次查看了发回的响应并将其设置为

if if语句if(test!=" false")

json回应

{"error":"true","id":62}    

default.js

$(".create").click(function (event) {
        event.preventDefault();
        $("#create-page").dialog({
            buttons: {
                "Create": function () {
                    var ed = tinyMCE.get('c_page_content');
                    var page_headline = $("#page_headline").val();
                    var page_title = $("#page_title").val();
                    var description = $("#description").val();
                    var keywords = $("#keywords").val();
                    var page_content = ed.getContent();
                    var id = $("#id").val();
                    var addItem = $('div[id="contentBox"]:last');
                    $.post("submit", {
                        page_headline: page_headline,
                        page_title: page_title,
                        description: description,
                        keywords: keywords,
                        id: id,
                        page_content: page_content
                    }, function (result) {
                            var test = result.error;
                        if (test != "false") {
                            addItem.append('<div class="contentBox ui-widget-content"><div class="cHeader">' + page_title + '</div><div class="cOption"><a href="create" class="edit" id="edit" rel="' + result.id + '">Edit</a></div><div class="cOption"><a href="json_del" class="delete" id="delete" rel="' + result.id + '">Delete</a></div></div>');
                            $(this).dialog("close");
                            alert("Page created successfully!");
                        } else {
                            $("#title_error").val(result.page_title);
                            $("#content_error").val(result.page_content);
                            if(result.page_title !== "")
                            {
                                    $( 'p[id=title_error]' ).show();
                            }
                            if(result.page_content !== "")
                            {
                                    $( 'p[id=title_error]' ).show();
                            }
                        }
                    });

                },
                Cancel: function () {
                    $(this).dialog("close");
                }
            }
        });
        $("#create-page").dialog("open");
    });

4 个答案:

答案 0 :(得分:2)

您的结果可能仍然是JSON字符串而不是对象。

尝试将结果输出到控制台,看看你得到了什么:

function (result) {

    console.log(result);

    ...

如果输出字符串,则表示需要将其转换为JavaScript对象。这可以通过以下方式完成:

var resultObject = $.parseJSON(result);

或者你可以通过传递一个&#34; json&#34;来告诉jQuery自动将它转换为一个对象。发布函数的数据类型(请参阅http://api.jquery.com/jquery.post/处的 dataType 参数)。

答案 1 :(得分:1)

尝试使用:

 var obj = $.parseJSON(result);

将结果String解析为JSON对象。

最好尝试使用jQuery.getJSON方法而不是$.post

答案 2 :(得分:0)

在使用之前将json字符串解析为object

var test = $.parseJSON(result);
if(test.error != "false") {
    //...
}

您也可以使用:

$.post( "...", { ... }, function(result) {
    if(result.error != "false")
}, "json");

答案 3 :(得分:0)

您需要向dataType提供$.post参数,告诉它自动解码JSON:

$.post("submit", {
        <parameters>
}, function(result) {
    ...
}, "json");

另一种方法是让服务器脚本发送Content-Type: application/json标题。