2013-10-25 29 views
0

我有一個PHP函數,給出了一個警告的反應,如果結果是> 0但我得到一個空的警告,如果結果是0阿賈克斯結果依賴於PHP結果

我怎樣才能停止?

function urlCheck() 
{ 
    $website_id = $this->input->post('website_id'); 
    $post_title   = $this->input->post('post_title'); 

    $urlCheck = $this->page_model->pageURLCheck($post_title, $moviesparx_website_id); 

    if($urlCheck > 0) 
    { 
     echo "This page name already exists"; 
    } 
} 

的jQuery的Ajax:

$.ajax({ 
      url:url, 
      data:data , 

      type: 'POST', 
      success: function (resp) { 
       alert(resp); 
      }, 
      error: function (resp) { 
       console.log(data); 
      } 
     }); 
+0

成功被棄用使用.done()代替...也console.log(resp)看看你回來。另一件事是......應該打印的警報「這個頁面名稱已經存在?」如果是這樣你需要將其轉換爲json並正確地將標題應用於它。 – xlordt

+0

這是因爲您只在結果> 0時發送響應 –

+0

@xlordt爲什麼他需要將其轉換爲JSON?沒有轉換,'resp'將只是PHP回聲的文本。 – Barmar

回答

1

那是因爲你要發送的響應僅當結果> 0.Send另一個反應,如果你的結果是< = 0.So寫的其他情況類似下列。

function urlCheck() 
{ 
    $website_id = $this->input->post('website_id'); 
    $post_title   = $this->input->post('post_title'); 

    $urlCheck = $this->page_model->pageURLCheck($post_title, $moviesparx_website_id); 

    if($urlCheck > 0) 
    { 
     echo 1; 
    } 
    else{ 
     echo 0; 
    } 
} 

阿賈克斯

$.ajax({ 
      url:url, 
      data:data , 

      type: 'POST', 
      success: function (resp) { 
       if(resp){ 
        alert('This page name already exists'); 
       } 
      }, 
      error: function (resp) { 
       console.log(data); 
      } 
     }); 
+0

我不想要其他我希望它不做任何事情沒有警報 –

+0

@Jess McKenzie試試我的答案,但你的問題很難理解tbh –

+0

那麼如果你不想顯示基於回覆收到的響應的警報 –

0

你可以做在客戶端另一個檢查:

服務器

<?php 

if ($urlCheck > 0) { 
    echo '1 - This page name already exists.'; 
} else { 
    echo '0 - New page name.'; 
} 
?> 

客戶:

// success handler 
success: function(resp) { 
    var realResp = resp.split('-'); 
    if (realResp[0] == '1') { 
     alert(realResp[1]); 
    } 
} 
+0

我不想要別人,我希望它不做任何事情沒有警報 –

+0

@Jess McKenzie這就是爲什麼我在消息前添加了一個狀態代碼,並進行客戶端檢查,只有當狀態檢查爲1時纔會發出警報,指示$ urlCheck> 0 –

1

試試這個:

$.ajax({ 
      url:url, 
      data:data , 

      type: 'POST', 
      success: function (resp) { 
     if(resp == '') 
      //do something 
     else 
      alert(resp); 
      } 

     }); 
0

嘗試是這樣的..

if($urlCheck > 0) { 
    echo "This page name already exists"; 
} else { 
    echo -1; 
} 

客戶端 -

success: function (resp) { 
    if(resp != -1) {  
     alert(resp); 
    } 
} 
0

這裏是一個完全工作的例子。注:由於您使用的是我不得不即興創作

<?php 

    function urlCheck ($urlCheck) 
    { 
     if ($urlCheck > 0) echo "This page name already exists"; exit; 
    } 

    if (isSet ($_POST ['send'])) 
    { 
     urlCheck (1); 
    } 
?> 


<!DOCTYPE html> 
    <html> 
    <head> 
    <title>blah</title> 
    <meta charset="utf-8"> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script> 
    $(document).ready (function(){ 
     $.ajax({ 
       url: "index.php", 
       data: {send: "data"}, 
       type: 'POST', 
      }).fail (function() { 
       console.log ("failed"); 
      }).done (function (data){ //dont use success 
       alert (data); 
      }); 
    }); 
    </script> 
    </head> 
    <body> 
    </body> 
    </html> 

這是爲什麼我州不使用成功:

取消通知

的jqXHR.success(),jqXHR.error(),和jqXHR.complete()回調 方法的jQuery 1.5引入了從jQuery 1.8開始不推薦使用。若要 爲您的代碼準備好最終刪除代碼,請改用jqXHR.done(), jqXHR.fail()和jqXHR.always()代替。