2012-11-30 15 views
0

有沒有解決我如何可以將值從'價值'傳遞給if語句?傳遞價值從阿賈克斯調用

我得到的值現在顯示1或0.現在我試圖完成的是如何將它傳遞給if語句。我想有這樣的事情。如果val = 0則返回true;否則返回false。我不知道我在使用ajax函數的正確軌道。但如果有更好的方式,你可以告訴我,我會感激。

$(function(){ 
     $('#add_product').click(function(){ 
     var i = $('#product_name').val(); 
     param = 'product_name='+i; 
     check_product(param).done(function(value) { 
     var val = value; //value return is 1 or 0 - this is fine 
     }); 
     //val should be past here so that I can determine if I will return true or false 
     if(val == 0){ 
      return true; 
     } else{ 
      return false; 
     } 
     }); 
    }); 

function check_product(param){ 
    return $.ajax({ 
    type : 'POST', 
    data : param, 
    url : baseurl+'cart/check_product_name/' 
}); 
} 

HTML表單:

<?php echo form_open_multipart('cart/save_product'); ?> 
<h3>Product Name:</h3> 
<?php echo form_input(array('name' => 'product_name', 'id' => 'product_name'), set_value('product_name')); ?> 
<h3>Price:</h3> 
<?php echo form_input(array('name' => 'price', 'id' => 'price'), set_value('price')); ?> 
<h3>Status:</h3> 
<?php 
$options = array(
    '1' => 'Active', 
    '0' => 'Not Active' 
); 
echo form_dropdown('status', $options); 
?> 
<h3>Short Description:</h3> 
<?php echo form_textarea(array('name' => 'short_description', 'id' => 'short_desc'), set_value('short_description')); ?> 
<h3>Image:</h3> 
<?php echo form_upload('userfile'); ?><br> 
<p class="submit" id="post_submit"><input type="submit" value="Submit" id="add_product" /></p> 
</form> 
+0

「#add_product」到底是什麼,爲什麼需要根據返回的值防止/不阻止點擊。它是鏈接到另一個頁面的錨元素,如果包含該元素的HTML在您的問題中。 – adeneo

+0

#add_product來自這裏:提交表單。我編輯了這個問題,並添加了html格式 –

回答

1

你需要防止的形式從提交,然後使用Ajax檢查產品名稱存在,而當Ajax調用完成你的表單提交如果返回值爲零,則返回javascript:

$(function() { 
    $('#add_product').click(function(e) { 
     e.preventDefault(); 
     var i  = $('#product_name').val(), 
      param = 'product_name=' + i, 
      self = this; 
     check_product(param).done(function(value) { 
      if (value === 0) self.submit(); 
     }); 
    }); 
}); 

function check_product(param) { 
    return $.ajax({ 
     type: 'POST', 
     data: param, 
     url: baseurl + 'cart/check_product_name/' 
    }); 
}​ 
+0

,這似乎沒有比原始代碼更好。 –

+0

@IliaG - 請你詳細介紹一下,因爲現在if/else語句位於成功回調的內部,有實際的值需要檢查,而且在OP的代碼中它不在成功回調中,並且由於ajax是異步的那肯定不會工作。 – adeneo

+0

它仍然具有相同的問題範圍。你在匿名函數中的返回將在點擊事件之後執行,已經完成。 –