অ্যাজাক্স কল সর্বদা 0 প্রদান করে


18

আমার সর্বদা 0 এজেএক্স ফিরে আসার সমস্যা আছে!

আমি বইটি দিয়ে সবকিছু করেছি এবং ভুলটি কি তা বুঝতে পারি না? সাহায্য করুন!!

আমার আজাক্স কলটি এখানে:

//Pass data through AJAX
var amountToConvert = price;

jQuery.ajax({
      type:"POST",
      url: "../../wp-admin/admin-ajax.php", // our PHP handler file
      action: "ajaxConversion",
      data: {
          amount: amountToConvert
      },
      success:function(data){
      alert(data);
      },
      error: function(errorThrown){
          alert(errorThrown);
      } 

  });
return false;

এবং ফাংশন.এফপি ফাংশনটি হ'ল:

function ajaxConversion(){

$amount = mysql_real_escape_string($_POST['amount']);

echo $amount;

die();
};

add_action('wp_ajax_nopriv_ajaxConversion', 'ajaxConversion');
add_action('wp_ajax_ajaxConversion', 'ajaxConversion');

আপনি কি নিজের কোডটি ডিবাগ করার চেষ্টা করেছেন ? এছাড়াও admin_url( 'admin-ajax.php' )কিছু মেক-আপ ইউআরএল নয়, এজেএক্স ইউআরএল পেতে ব্যবহার করুন ।
ফুক্সিয়া

উত্তর:


15

আপনি কি আপনার ডেটা এবং পরীক্ষাতে ক্রিয়া (ajaxConversion) রাখতে পারবেন?

jQuery.ajax({
  type:"POST",
  url: ajaxurl,
  data: {
      action: "ajaxConversion",
      amount: amountToConvert
  },
  success:function(data){
  alert(data);
  },
  error: function(errorThrown){
      alert(errorThrown);
  } 

});

এটি এখনও আমার সামগ্রীতে একটি 0 যুক্ত করছে ending
বেন র্যাকিকোট

1
@ বেনারাকিকোট: আপনি কি পিএইচপি কোডে ইকো, ডাই () ইত্যাদির মতো আউটপুট দেয় এমন কোনও বিবৃতি আছে কিনা তা পরীক্ষা করতে পারেন?
জয়ওয়াই পেরেরা

2
আরে জে, ডাই () যোগ করে বেরিয়েছে; আমার এজ্যাক্স এটিকে ঠিক করে দিয়েছে!
বেন র্যাকিকোট

20

ব্যবহার wp_die();AJAX ফাংশন শেষে আমার জন্য সমস্যা সমাধান করা হয়েছে।

যেমন

add_action( 'wp_ajax_my_ajax_function', 'my_ajax_function' );

function my_ajax_function(){      
    echo json_encode($myvar);
    wp_die(); 
}

ধন্যবাদ ... কেন জানি না তবে কেবল মর () ব্যবহার করে কাজ হয়নি।
সেগিভ এসইও

10

আমার জন্য কৌশলটি wp_ajax_noprivঅ্যাকশন যুক্ত করা ছিল add আমি ডাব্লুপি অ্যাডমিনে লগইন করার সময় আমি একটি ব্রাউজারে স্ক্রিপ্টটি পরীক্ষা করেছিলাম এবং তারপরে আমি ক্রোমে একই স্ক্রিপ্ট চেষ্টা করে উপলব্ধি করেছি যে স্ক্রিপ্টটি কাজ করে না। আমি রাখার পরে wp_ajax_nopriv, সবকিছু কাজ শুরু করে। :)

add_action( 'wp_ajax_nopriv_erase_uploaded_images', 'erase_uploaded_images' );
add_action( 'wp_ajax_erase_uploaded_images', 'erase_uploaded_images' );

function erase_uploaded_images() {
    $attach_id = filter_input( INPUT_POST, 'attach_id' );
    wp_delete_attachment( $attach_id );
    if ( isset( $_SESSION['uploaded_images'] ) ) {
        $array_attachments = $_SESSION['uploaded_images'];
        if ( ( $key = array_search( $attach_id, $array_attachments ) ) !== false ) {
            unset( $array_attachments[$key] );
        }
        $_SESSION['uploaded_images'] = $array_attachments;
    }
    wp_die();
}

এটি, আমার বন্ধু, আমাকে হতাশার 2 ঘন্টা বাঁচিয়েছে। আপনার অ্যাপ্লিকেশনটিকে অন্য পরিবেশে স্থাপন করার সময় শিখার জন্য আরও একটি পাঠ টি টি টি
ট্রি ন্যুগেইন

এটি খুব সত্য ... আপনি যদি প্রশাসনে লগইন হন তবে _প্রিভ ফাংশনটি বলা হয় না
মিশাল হলুব

2

আমি সার্ভারের পাশে wp_send_json_success () এবং wp_send_json_error () ব্যবহার করার পরামর্শ দেব । আপনাকে ডাই () ইত্যাদি সম্পর্কে উদ্বিগ্ন হওয়ার দরকার নেই এবং "স্থিতি" ভেরিয়েবলটি স্বয়ংক্রিয়ভাবে প্রেরণ করা হয়, এটি এভাবে অনেক পরিষ্কার। উদাহরণ স্বরূপ

function ajaxConversion(){
    // ...
    wp_send_json_success(array(
      'amount' => $amount
    ));
}

এর মতো কিছু ঘটবে:

{
 "success":true,
 "data":{"amount":125}
}

সুতরাং আপনি নিজের এজ্যাক্স কলটিতে সহজেই মানগুলি বের করতে পারবেন:

jQuery.ajax({
    type       : 'post',
    data       : {
                  action: 'ajaxConversion', 
                  //nonce : ajax.nonce                              
                 },
    dataType   : 'json',
    url        : ajax.ajaxurl,
    success    : function(data){
         if(data.success) {
            alert(data.amount);                         
         } else {
            alert(data.data.message);
         }

    }
}); 

আর একটি সাধারণ জিনিস যার মধ্যে আমি দৌড়েছি তা হ'ল ক্রিয়াকলাপের টাইপগুলি। লগ ইন করার সময় এগুলি wp_ajax_nopriv_ {ক্রিয়া} বা wp_ajax_ {ক্রিয়া should হওয়া উচিত For উদাহরণস্বরূপ, wp-ajax_nopriv, আমি এর আগে বেশ কয়েকবার করেছি।


0

আমার জন্য এটি ছিল যে আমি আমার পিএইচপি ফাংশনটির returnপরিবর্তে ব্যবহার echoকরছিলাম। এটি echoস্থির করে এটি পরিবর্তন করা ।

function doAjax() {
    $result = getPosts();
    echo json_encode($result, true);
    die();
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.