IF-ELSE声明无效

时间:2014-03-05 04:53:21

标签: javascript jquery ajax if-statement

我正在努力创建一个网站。 我需要在ajax中创建一个IF-ELSE。它基本上调用了一个名为“greeting”的输入内容,如果用户插入特定文本则为“YES”,否则为“NO”。

jQuery(document).ready(function () {
    var greeting = jQuery("#greeting").val();
    jQuery("#push-me").click(function () {
        jQuery.ajax({
            type: 'POST',
            url: 'http://www.boatsandbeats.com/wordpress/wp-admin/admin-ajax.php',
            data: {
                action: 'myAjax',
                greeting: jQuery("#greeting").val(),
            },
            success: function (data, textStatus, XMLHttpRequest) {
                if (data == "XYZ") == 0 {
                    jQuery("#test-div").html('');
                    jQuery("#test-div").append("YES");
                } else {
                    jQuery("#test-div").html('');
                    jQuery("#test-div").append("NOPE");
                }
            },
            error: function (MLHttpRequest, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });
    });
});

虽然其余代码工作得很好,但它无法识别IF并将所有内容视为真实(因此,打印“是”)。

任何人都可以这么善良并向我解释一下吗?

5 个答案:

答案 0 :(得分:2)

因为if语句错误而无效

 if (data == "XYZ") == 0 {

应该是

 if (data.greeting == "XYZ") {

}

答案 1 :(得分:1)

Step 1:检查你的ajax是否真的返回了什么。

...//add the following line
 success: function (data, textStatus, XMLHttpRequest) {
    console.log(data);
    alert("Data logged." + data);
...

Step 2:你想测试什么? 您想知道数据(ajax返回)是否为字符串且该字符串的值是否为“XYZ”?

 //change 
 if (data == "XYZ") == 0  
 //to
 if (data === "XYZ") 

请注意,===三联=====不同。区别在于 /* strA.localeCompare(strB); Returns: 0: exact match -1: strA < strB 1: strB > strA */ 将检查变量是否具有相同的值和相同的类型。

此外,在Javascrip中可以比较类似于您的风格的字符串,例如使用localeCompare()

if(data.localeCompare(“XYZ”)=== 0)

function myAjax()
{
    $greeting = $_POST['greeting'];
    if (isset($_POST['greeting']))
        $greeting = $_POST['greeting']; 
    $results = "<h2>".$greeting."</h2>";
    die($results);
}

<强>更新

假设你的php功能如下:

{
    //$greeting is being assigned a value from POST greetings, // in post is empty then $greeting will be empty as well. 
    $greeting = $_POST['greeting'];
    //You are validating POST greeting, although you already captured it's value and put it in $greeting, so why not using $greeting here instead?
    if (isset($_POST['greeting']))// this if has no {} so ONLY the first line after will be included in this IF condition. 
        $greeting = $_POST['greeting'];
    // this line will be exectue no matter what, so the value of $greeting will be entered into a string enclosed with <h2> tags. if POST greeting is empty, then $greeting will be empty of course. 
    $results  = "<h2>" . $greeting . "</h2>";
    //the variable $result now has "<h2></h2>" as it's value if $greeting is empty. 
    die($results); //echoing $result, or 
}

这就是将要发生的事情。

"#greeting").val()

因此,您已确认收到“

”作为从AJAX返回的数据变量的值。 为什么在您的情况下将其与XYZ进行比较?

在您的JS中,您将ajax{data{greeting:jQuery("#greeting").val() }}分配给变量问候语,然后将该变量用作 var greeting = jQuery("#greeting").val();// what is the use of this line? 的数组属性

 data: {
                "action": 'myAjax',
                "greeting": jQuery("#greeting").val(),// what is the value of "#greeting").val()?
            },

将您的对象属性用“”封闭,例如“问候语”。

{{1}}

答案 2 :(得分:0)

IF条件系统看起来不对,

if (data == "XYZ") == 0

您应该只使用,不需要== 0

if (data == "XYZ"){
    //.... code here 
}

或者json

中的ajax响应
if (data.key == "XYZ"){
    //.... code here 
}

答案 3 :(得分:0)

首先你需要检查数据是否会精确打印XYZ或打印[Object object] if [Object object]然后你需要检查data.d ==“XYZ”

答案 4 :(得分:0)

成功函数首先解析然后像这样比较

 var response=$.parseJSON(data);

 if(response.field=="XYZ")
 {
    jQuery("#test-div").html('');
    jQuery("#test-div").append("YES");
 }
 else
{
     jQuery("#test-div").html('');
    jQuery("#test-div").append("NOPE");
}