2012-10-12 163 views
2

我需要更新x和y的值通過Ajax和PHP裁剪圖像。Math.round返回NaN的

這段代碼打開一個對話窗口上點擊一個按鈕的圖像。工作正常,但Firebug顯示NaN發佈變量。我如何獲得正確的值?我試過parseFloat()和parseInt()來返回一個數字變量。

jQuery(function($) { 

    jQuery('#jc-hidden-image').Jcrop({ 
     onChange: showCoords, 
     onSelect: showCoords 
    }); 

}); 

function showCoords(c) { 
    jQuery('#x1').val(c.x); 
    jQuery('#y1').val(c.y); 
    jQuery('#x2').val(c.x2); 
    jQuery('#y2').val(c.y2); 
    jQuery('#w').val(c.w); 
    jQuery('#h').val(c.h); 
}; 
jQuery(function($) { 

    $('#jc-dyn-btn').click(function() { 
     var jcrop_api; 
     var id = $(this).attr('data-id'); 
     var rel = $(this).attr('data-rel'); 
     var value = $(this).attr('data-value'); 
     var mainImage = rel + '/' + id; 
     var x, y, w, h; 
     x = Math.round($('#x1').val()); 
     y = Math.round($('#y1').val()); 
     w = Math.round($('#w').val()); 
     h = Math.round($('#h').val()); 
     $(" 
    img.jc - hidden - image ").attr(" 
    src ", mainImage); 
     var $dialog = $(" <div> < div id = \"jc-dialog\ class=\"jc-dialog\"><img class=\"jc-hidden-image\" src=\"" + mainImage + "\" /><form id=\"coords\" class=\"coords\"><label>X1<input type=\"text\" size=\"4\" id=\"x1\" name=\"x1\" /></label><label>Y1 <input type=\"text\" size=\"4\" id=\"y1\" name=\"y1\" /></label><label>X2 <input type=\"text\" size=\"4\" id=\"x2\" name=\"x2\" /></label><label>Y2 <input type=\"text\" size=\"4\" id=\"y2\" name=\"y2\" /></label><label>W <input type=\"text\" size=\"4\" id=\"w\" name=\"w\" /></label><label>H <input type=\"text\" size=\"4\" id=\"h\" name=\"h\" /></label></form></div>"); 

     $dialog.find('img').Jcrop({ 
      onChange: showCoords, 
      onSelect: showCoords 
     }, function() { 
      jcrop_api = this; 
      jcrop_api.animateTo([259, 81, 469, 304]); 
      $dialog.dialog({ 
       modal: true, 
       title: 'Jcrop in jQuery-ui Dialog (Dynamic)', 
       close: function() { 
        $dialog.remove(); 
       }, 
       width: jcrop_api.getBounds()[0] + 34, 
       resizable: false, 
       buttons: { 
        "SAVE": function() { 
         $.ajax({ 

          url: "crop.php", 
          type: "POST", 
          data: "x=" + x + "&y=" + y + "&w=" + w + "&h=" + h + "&src=" + mainImage, 

          success: function() { 
           // $dialog.dialog('close'); 
          } 
         }); 
        }, 
        "CLOSE": function() { 
         $dialog.dialog('close'); 
        } 
       } 
      }) //dialog 
     }); //function 
     return false; 
    }); //clik 
}); //jquery​ 
+1

這裏沒多少東西。如果Math.round重新調整NaN,那麼輸入是什麼? –

+0

字符串文字中有太多空格。另外,如果你使用撇號(''')作爲字符串分隔符,你不需要爲每個'''轉義。 – Bergi

+0

好的,我將再次修改。謝謝 – user1723670

回答

4

試試這個,使用parseFloat

Math.round(parseFloat($('#x1').val())); 

更新:

另外,還要確保你正在使用正確的id S爲輸入,是否應該$('#x1')$('#x')Here is an example

+0

Firebug返回:x NaN – user1723670

+0

@ user1723670,做工精細[這裏](http://jsfiddle.net/jtLKU/)。 –

+0

是的,但在這段代碼doesn't作品,並通過NaN值..奇怪......可能是我收到的其他值?INPUT TYPE = \ 「文本\」 大小= \ 「4 \」 ID = \ 「X1 \」 NAME = \ 「X1 \」/> – user1723670

0

首先,您需要使用parseFloat。更改語句爲:

x = Math.round(parseFloat($('#x1').val())); 
y = Math.round(parseFloat($('#y1').val())); 
w = Math.round(parseFloat($('#w').val())); 
h = Math.round(parseFloat($('#h').val())); 
+0

@DavidThomas對不起!編輯。 – hjpotter92

+0

是的,但在這段代碼不起作用,並通過NaN值..奇怪...可能是我得到其他值? input type = \「text \」size = \「4 \」id = \「x1 \」name = \「x1 \」/> – user1723670